CN113366871A - Error correction of data packets in short-range wireless communication systems - Google Patents

Error correction of data packets in short-range wireless communication systems Download PDF

Info

Publication number
CN113366871A
CN113366871A CN202080011566.8A CN202080011566A CN113366871A CN 113366871 A CN113366871 A CN 113366871A CN 202080011566 A CN202080011566 A CN 202080011566A CN 113366871 A CN113366871 A CN 113366871A
Authority
CN
China
Prior art keywords
packet
mode
value
bit
retransmission
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.)
Pending
Application number
CN202080011566.8A
Other languages
Chinese (zh)
Inventor
H.登博尔
J.林斯基
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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN113366871A publication Critical patent/CN113366871A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/08Arrangements for detecting or preventing errors in the information received by repeating transmission, e.g. Verdan system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • H04W12/033Protecting confidentiality, e.g. by encryption of the user plane, e.g. user's traffic
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/10Integrity
    • H04W12/106Packet or message integrity
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

The first device may establish a logical link associated with short-range communication with the second device. A first device may receive a first packet carried on a logical link. When the first PDU data fails the decoding check, the first device may determine a first operation mode from a plurality of operation modes for error correction based on the logical link, the first device may receive a set of retransmission packets on the logical link, each retransmission packet of the set of retransmission packets including corresponding PDU data that is a retransmission of the first PDU data, and the first device may apply the first operation mode for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.

Description

Error correction of data packets in short-range wireless communication systems
Priority
This patent application claims priority from a non-provisional application No.16/268,395 entitled "ERROR CORRECTION FOR DATA PACKETS IN SHORT-RANGE WIRELESS communiations SYSTEMS," filed on 5.2.2019, assigned to the assignee of the present application and expressly incorporated herein by reference.
Technical Field
The present disclosure relates generally to communication systems and, more particularly, to error correction of data packets received via logical links.
Background
A Wireless Personal Area Network (WPAN) is a personal, short-range wireless network for interconnecting devices that are concentrated within a user's specific distance range. WPANs have gained popularity because of the flexibility and convenience that WPANs provide in terms of connectivity. WPANs, such as those based on short-range wireless communication protocols, provide wireless connectivity to devices by providing wireless links that allow connectivity within a particular distance (e.g., 5 meters, 10 meters, 20 meters, 100 meters, etc.).
The short-range wireless communication protocol may include
Figure BDA0003186500690000011
(BT) protocol,
Figure BDA0003186500690000012
A low energy consumption (BLE) protocol,
Figure BDA0003186500690000013
Protocols, and the like. BT is an advantageWireless technology standards for radio frequency communications are supported with Ultra High Frequency (UHF) radio waves in the globally recognized industrial, scientific, and medical (ISM) frequency band, e.g., from 2.400 gigahertz (GHz) to 2.485 GHz. Similarly, BLE defines a standard that supports radio frequency communications operating within the 2.4GHz ISM band.
Short-range wireless communication protocols may be used to connect devices on a WPAN. Examples of devices that may communicate over a WPAN may include laptop computers, tablet computers, smart phones, personal data assistants, audio systems (e.g., headphones, speakers, etc.), wearable devices (e.g., smart watches, fitness trackers), battery-powered sensors and actuators in various medical, industrial, consumer, and fitness applications, and so forth.
In some cases, WPANs may provide advantages and convenience over other network types, such as Wireless Local Area Networks (WLANs). However, short-range wireless communication in a WPAN may be susceptible to the same or similar problems as communication in other wireless networks. For example, short-range wireless communications may experience errors due to noisy and/or congested transmission mediums. Such problems experienced with short-range wireless communications may degrade the performance of the device, may degrade the user experience, and so on. Therefore, a need exists for an approach for error correction in short-range wireless communications.
Disclosure of Invention
The following presents a simplified summary of one or more aspects in order to provide a basic understanding of such aspects. This summary is not an extensive overview of all contemplated aspects, and is intended to neither identify key or critical elements of all aspects nor delineate the scope of any or all aspects. Its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to the more detailed description that is presented later.
Various standards and protocols for Wireless Personal Area Networks (WPANs), such as
Figure BDA0003186500690000021
(BT) and/or
Figure BDA0003186500690000022
Low energy consumption (BLE))) may provide for retransmission of messages, such as when a message with one or more errors and/or unsuccessful decoding is received. Messages (e.g., the payload of a message) may be protected with a Cyclic Redundancy Check (CRC) value that must match a value calculated by the receiving device in order for the message to be successfully decoded. If the message is encrypted, the message (e.g., payload) may be protected with a Message Integrity Code (MIC). Similar to CRC validation, the MIC value must match the value calculated by the receiving device in order for the message to be successfully decoded. If the CRC validation and/or MIC validation (if any) are not passed at the receiving device, the receiving device may discard the message, the sending device may retransmit the message, and so on.
Various conditions (e.g., over-the-air, channel conditions) may cause errors (e.g., bit errors) in receiving a message, which may prevent the message from being correctly signaled by a receiving device. Thus, for example, a sending device may issue one or more retransmissions of a message when the receiving device does not issue an Acknowledgement (ACK) message in response to the message (e.g., within a predetermined time period). The transmitting device may retransmit the message multiple times (e.g., twelve times) before the receiving device can successfully decode the message without any errors. Each retransmission of a message by the sending device (and each non-ack (nack) sent by the receiving device, if any) may consume additional power by the device and further may occupy a frequency band that may be shared with other devices (e.g., Wi-Fi devices).
In view of the foregoing, devices communicating over a WPAN may benefit from mechanisms for error correction. With such a mechanism for error correction, the number of retransmissions can be reduced. Because decoding each transmitted/retransmitted message separately and issuing an ACK/NACK message in response to each separate message may result in considerable overhead (e.g., power consumption and/or bandwidth usage), reducing the number of retransmissions from which error-free messages may be obtained may reduce overhead. For example, using bits from each transmission/retransmission of a message may allow the message to be successfully decoded while reducing the number of retransmissions.
In aspects of the disclosure, methods, computer-readable media, and apparatuses are provided. The apparatus may be a first device. The first device may establish a logical link associated with short-range communication with the second device. A first device may receive a first packet carried on a logical link. When first Protocol Data Unit (PDU) data included in the first packet passes a decoding check, the first device may transmit at least a portion of the first PDU data to a higher layer of the first device. When the first PDU data fails the decoding check, the first device may determine a first operation mode from a plurality of operation modes for error correction based on the logical link, the first device may receive a set of retransmission packets on the logical link, each retransmission packet of the set of retransmission packets including corresponding PDU data that is a retransmission of the first PDU data, and the first device may apply the first operation mode for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
In certain aspects, the first device may determine a type of logical link, wherein the first mode of operation for error correction is determined based on the type of logical link. In one aspect, the type of logical link is determined based on at least one of an access address or a logical transmit address (LT _ ADDR) indicated in at least one header of at least one packet received over the logical link.
In one aspect, the logical link comprises one of an asynchronous connection-less link (ACL) link or an advanced audio distribution profile (A2DP) link, and the first mode of operation comprises a soft-combining (soft-combining) mode based on the ACL link or the A2DP link. In one aspect, when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first PDU data of the first packet including the first payload data and a first Message Integrity Code (MIC) value and further based on corresponding PDU data of each of a set of retransmission packets including the corresponding payload data and a corresponding MIC value. In one such aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted. In another aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets remain encrypted.
In one aspect, when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets. In one such aspect, when the first PDU data packet of the first packet includes a first MIC value and when the corresponding PDU data packet of each of the set of retransmit packets includes a corresponding MIC value, a first mode of operation for error correction is applied without utilizing the first MIC value and without utilizing each of the corresponding MIC values. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted.
In one aspect, when the first mode of operation for error correction comprises a soft combining mode, the first device is to apply the first mode of operation for error correction by: storing each soft value of a set of soft values (soft values) in each buffer of a set of buffers, each soft value of the set of soft values being a three-bit signed soft value based on a respective bit of first PDU data of a first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check. In one such aspect, each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
In another aspect, the logical link comprises an extended synchronous connection-oriented (eSCO) link, and the first mode of operation comprises a quality bit mask (QBm) mode based on the eSCO link. When the first mode of operation for error correction comprises the QBm mode, the first device will apply the first mode of operation for error correction by: performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; and determining a set of bit error quality metrics based on the set of estimated bit values.
In another aspect, the logical link comprises an Isochronous (ISO) link and the first mode of operation for error correction comprises an ISO link based quality bit mask hybrid (QBm-H) mode. In one such aspect, when the first mode of operation for error correction comprises the QBm-H mode, the first device is to apply the first mode of operation for error correction by: performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; determining a set of bit error quality metrics based on the set of estimated bit values; when one or more additional retransmission packets received after one retransmission packet and another retransmission packet in the set of retransmission packets include a retransmission of the first PDU data of the first packet, the one or more additional retransmission packets are discarded. In one such aspect, when the first mode of operation for error correction comprises the QBm-H mode, and when the set of retransmission packets comprises three or more retransmission packets, the first device will apply the first mode of operation for error correction by: storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check.
In certain aspects, the first device may generate an estimated Cyclic Redundancy Check (CRC) value based on a set of estimated bit values obtained based on application of a first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data, and the first device may compare the estimated CRC value to a first CRC value included in a most recently received retransmission packet of the set of retransmission packets, and the set of estimated bit values pass a decoding check based on the comparison of the estimated CRC value to the first CRC value, and wherein the set of estimated bit values fail the decoding check when the generated CRC value is different from the first CRC value.
In certain aspects, the first device may generate an estimated MIC value based on the set of estimated bit values, and the first device may compare the estimated MIC value to a first MIC value included in a most recently received retransmission packet of the set of retransmission packets, and pass the set of estimated bit values through a decoding check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, wherein the set of estimated bit values fail the decoding check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
In an aspect, the first device may issue to a higher layer of the first device a set of estimated bit values obtained based on application of the first mode of operation for error correction, the set of estimated bit values estimated to be at least part of the first PDU data. In an aspect, the first device may determine a set of bit errors associated with the set of estimated bit values based on application of a first mode of operation for error correction, and the first device may issue at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of positions of the set of bit errors or a number of the set of bit errors.
To the accomplishment of the foregoing and related ends, one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative features of the one or more aspects. These features are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed and the present description is intended to include all such aspects and their equivalents.
Drawings
Fig. 1 is a diagram illustrating an example of a short-range wireless communication system in accordance with certain aspects of the present disclosure.
Fig. 2 is a block diagram of a short-range wireless communication device in accordance with certain aspects of the present disclosure.
Fig. 3A is a diagram illustrating a Bluetooth (BT) protocol stack that may be implemented by a BT device, according to certain aspects of the present disclosure.
Figure 3B is a diagram illustrating a BT protocol stack that may be implemented by a BT low energy consumption (BLE) device, according to certain aspects of the present disclosure.
Fig. 4A is a diagram illustrating a BT data packet, according to certain aspects of the present disclosure.
Figure 4B is a diagram illustrating BLE data packets according to certain aspects of the present disclosure.
Fig. 5 is a diagram illustrating a short-range wireless communication system in accordance with certain aspects of the present disclosure.
Fig. 6 is a flow chart of a method of error correction in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
Fig. 7 is a diagram of error correction in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
Fig. 8A-8B are flow diagrams of methods of error correction in short-range wireless communication systems, according to certain aspects of the present disclosure.
Fig. 9 is a flow diagram of a method of performing decoding checking in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
Fig. 10 is a flow diagram illustrating a first aspect of a method of applying an operating mode for error correction in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
Fig. 11 is a flow chart illustrating a second aspect of a method of applying an operating mode for error correction in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
Fig. 12 is a flow chart illustrating a third aspect of a method of applying an operating mode for error correction in a short-range wireless communication system, in accordance with certain aspects of the present disclosure.
FIG. 13 is a conceptual data flow diagram illustrating the data flow between different components/assemblies in an example apparatus.
Fig. 14 is a diagram illustrating an example of a hardware implementation for an apparatus employing a processing system.
Detailed Description
The detailed description set forth below in connection with the appended drawings is intended as a description of various configurations and is not intended to represent the only configurations in which the concepts described herein may be practiced. The detailed description includes specific details for the purpose of providing a thorough understanding of the various concepts. It will be apparent, however, to one skilled in the art that these concepts may be practiced without these specific details. In some instances, well-known structures and components are shown in block diagram form in order to avoid obscuring such concepts.
Several aspects of a telecommunications system will now be presented with reference to various apparatus and methods. These apparatus and methods will be described in the following detailed description and illustrated in the accompanying drawings by various blocks, components, circuits, processes, algorithms, etc. (collectively referred to as "elements"). These elements may be implemented using electronic hardware, computer software, or any combination thereof. Whether such elements are implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system.
By way of example, an element or any portion of an element, or any combination of elements, may be implemented as a "processing system" that includes one or more processors. Examples of processors include microprocessors, microcontrollers, Graphics Processing Units (GPUs), Central Processing Units (CPUs), application processors, Digital Signal Processors (DSPs), Reduced Instruction Set Computing (RISC) processors, systems on chip (socs), baseband processors, Field Programmable Gate Arrays (FPGAs), Programmable Logic Devices (PLDs), state machines, gated logic, discrete hardware circuits, and other suitable hardware configured to perform the various functionalities described throughout this disclosure. One or more processors in the processing system may execute software. Software shall be construed broadly to mean instructions, instruction sets, code segments, program code, programs, subprograms, software components, applications, software packages, routines, subroutines, objects, executables, threads of execution, procedures, functions, etc., whether referred to as software, firmware, middleware, microcode, hardware description language, or otherwise.
Accordingly, in one or more example embodiments, the functions described may be implemented in hardware, software, or any combination thereof. If implemented in software, the functions may be stored on or encoded as one or more instructions or code on a computer-readable medium. Computer readable media includes computer storage media. A storage media may be any available media that can be accessed by a computer. By way of example, and not limitation, such computer-readable media can comprise Random Access Memory (RAM), Read Only Memory (ROM), electrically erasable programmable ROM (eeprom), optical disk storage, magnetic disk storage, other magnetic storage devices, combinations of the above types of computer-readable media, or any other medium that can be used to store computer-executable code in the form of instructions or data structures that can be accessed by a computer.
Fig. 1 illustrates an example WPAN 100 in accordance with certain aspects of the present disclosure. Within the WPAN 100, the central wireless device 102 may use a logical link 116 to communicate with one or more peripheral devices 104, 106, 108, 110, 112, 114 using a short-range wireless communication protocol. The short-range wireless communication protocol may include
Figure BDA0003186500690000081
(BT) protocol or BT low energy consumption (BLE) protocol.
Examples of wireless device 102 include a cellular phone, a smart phone, a Session Initiation Protocol (SIP) phone, a mobile Station (STA), a laptop, a Personal Computer (PC), a desktop computer, a Personal Digital Assistant (PDA), a satellite radio, a Global Positioning System (GPS), a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a tablet, a smart device, a wearable device, a vehicle, an electricity meter, an air pump, a toaster, a thermostat, a hearing aid, a wireless headset, an on-body glucose on-body unit (IoT) device, or any other similarly functioning device.
Examples of one or more peripheral devices 104, 106, 108, 110, 112, 114 include a cellular phone, a smart phone, a SIP phone, a STA, a laptop, a PC, a desktop computer, a PDA, a satellite radio, a global positioning system, a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a tablet, a smart device, a wearable device, a vehicle, an electricity meter, a gas pump, a toaster, a thermostat, a hearing aid, a wireless headset, a blood glucose unit, an IoT device, or any other similarly functioning device. Although the central wireless device 102 is shown as communicating with six peripheral devices 104, 106, 108, 110, 112, 114 in the WPAN 100, the wireless device 102 may communicate with more or less than six peripheral devices within the WPAN 100 without departing from the scope of the present disclosure.
A device implementing the BT protocol (e.g., wireless device 102) may operate according to one radio mode, such as Basic Rate (BR)/Enhanced Data Rate (EDR), and a device implementing the BLE protocol may operate according to a BLE radio mode. In certain aspects, a device (e.g., wireless device 102) may be configured to have dual radio modes, and thus may be capable of operating according to a BR/EDR mode or a BLE mode, e.g., based on the type of short-range wireless communication that the device may participate in.
For example, a device may operate according to a BR/EDR mode for continuous streaming (streaming) of data (e.g., audio data), for broadcast networks, for mesh networks, and/or for certain other applications where relatively high data rates may be more appropriate. However, for short burst data transmissions and/or for certain other applications where power savings may be desirable (e.g., and relatively low data rates may be acceptable), the device may operate according to BLE mode. In other aspects, a device may operate according to one or more other radio modes, including a proprietary radio mode (e.g., a high speed radio mode, a low power radio mode, an isochronous radio mode, etc.).
The short-range wireless communication protocol (e.g., BT and/or BLE) may include and/or may use one or more other communication protocols, e.g., for establishing and maintaining a communication link. As shown, the wireless device 102 can establish a logical link 116 with at least one other device, such as the wireless headset 112, according to at least one communication protocol for short-range wireless communication.
Logical link 116 may include a communication link that conforms to a protocol including and/or for use with BT or BLE. In one aspect, logical link 116 may comprise an Asynchronous Connectionless (ACL) link. Using the ACL, the wireless device 102 can connect (or "pair" in the terminology of the BT specification) with a second device (e.g., headset 112). The connection is asynchronous, in that the two devices may not need to synchronize data communication in time between each other to allow communication of data packets via logical link 116.
In one aspect, the logical link 116 may comprise an advanced audio distribution profile (A2DP) link. The A2DP link may provide a point-to-point link between a source device (e.g., wireless device 102) and a sink device (e.g., headset 112). With the A2DP link, data packets including audio may be sent on an ACL data channel, and other information (e.g., for controlling audio streaming) may be sent on a separate control channel. Data packets (e.g., including audio) may occur non-periodically.
In another aspect, the logical link 116 may support a synchronous logical transfer mechanism between the "master" and "slave". For example, logical link 116 may comprise a Synchronous Connection Oriented (SCO) link. The SCO link may provide a symmetric point-to-point link between a master device (e.g., wireless device 102) and a slave device (e.g., headset 112) using time slots reserved for BT communication. However, SCO links may not support retransmission of data packets, which may be unsatisfactory in audio streaming and/or voice usage scenarios, where dropped audio or voice packets may degrade the quality of the user experience.
In yet another aspect, logical link 116 may comprise an extended sco (esco) link. The eSCO link may provide a symmetric or asymmetric point-to-point link between a master device (e.g., wireless device 102) and a slave device (e.g., headset 112) using time slots reserved for BT communication, and may also provide a retransmission window after the reserved time slots. Because retransmission windows can be used to facilitate retransmission, eSCO links can be suitable for audio streaming and/or voice use cases because dropped audio or voice packets can be retransmitted and thus the probability of successfully receiving data packets can be increased.
In one aspect, logical link 116 may comprise an Isochronous (ISO) link. With ISO links, the logical link 116 may combine certain features of both synchronous and asynchronous links. For example, a flow on an ISO link may begin with a start packet and then may asynchronously send data packets. On an ISO link, the number of retransmission attempts by a transmitting device (e.g., wireless device 102) may be limited. Thus, if the receiving device (e.g., headset 112) is unable to decode the data packet within a limited number of retransmission attempts, the data packet may be discarded and the receiving device may continue to receive the stream without data from the discarded data packet.
Due to various factors (e.g., an increase in the number of wireless devices used), the wireless devices may cause congestion on the frequencies used for the wireless channels, such as the wireless channel on which the logical link 116 is carried. Thus, a wireless communication channel (e.g., a wireless communication channel on which the logical link 116 is carried) may be "noisy" because static, congestion, and/or other interference may introduce random signals on the same frequency bands as those reserved for communication over the established logical link 116. Such static, congestion, interference, and/or other random signals may cause errors in the initial packets sent on logical link 116. By providing for retransmission of the initial packet over logical link 116, the probability of receiving an error-free packet may be increased.
In certain standards and protocols, such as BLE, the wireless device 102 may detect errors in a Protocol Data Unit (PDU) of a data packet by using Cyclic Redundancy Check (CRC) validation, and optionally Message Integrity Code (MIC) validation (e.g., MIC validation may be used when the data packet is ciphered). Accordingly, retransmission of a data packet provides a means for error correction of the PDU data by: the same PDU data is repeatedly provided to the receiving apparatus so that the receiving apparatus can replace erroneous PDU data with PDU data of the retransmission packet that can pass CRC verification (and MIC verification, if present).
For example, the wireless device 102 may send an initial data packet 120 over the logical link 116 to the headset 112. Headset 112 may receive initial data packet 120 over logical link 116 and headset 112 may attempt to verify the PDU data of initial data packet 120 using CRC verification and, if applicable, MIC verification. If one of the CRC and MIC verifications fails, the headset 112 may determine that the PDU data packet of the initial data packet 120 includes an error. In certain aspects, the headset 112 may respond to the initial data packet 120 by sending an Acknowledgement (ACK)/non-ACK (NACK) message indicating a NACK because the PDU data packet of the initial data packet 120 includes at least one error.
The wireless device 102 may transmit at least a first retransmission data packet of the set of retransmission data packets 122 to the headset 112 over the logical link 116. For example, the wireless device 102 may transmit the first retransmission data packet of the set of retransmission data packets 122 based on receiving a NACK message from the headset 112. Like the initial data packet 120, the headset 112 may attempt to verify the PDU data of one of the first retransmit data packets in the set of retransmit data packets 122 using CRC verification and, if applicable, MIC verification. Although the set of retransmitted data packets 122 may increase the probability that the PDU data of the initial data packet 120 will be received without any errors, nevertheless, the first retransmitted data packet in the set of retransmitted data packets 122 may be affected by sub-optimal (subpitial) conditions on the wireless channel on which the logical link 116 is carried.
As a result, the first retransmitted data packet in the set of retransmitted data packets 122 may still experience degradation due to static electricity, congestion, interference, and/or other random signals. Similar to the initial data packet 120, when the headset 112 receives the first retransmitted data packet in the set of retransmitted data packets 122, errors may be introduced into the first retransmitted data packet due to degradation in wireless channel conditions. Thus, when the first retransmitted data packet in the set of retransmitted data packets 122 fails a CRC validation or fails a MIC validation (if MIC validation applies), the headset 112 may issue another NACK message to the wireless device 102. For example, wireless device 102 may then transmit a second retransmission data packet of retransmission data packet set 122 over logical link 116 in response to another NACK message transmitted by headset 112.
According to certain standards and/or protocols, the set of retransmit data packets 122 can reach a relatively large number (e.g., 12 retransmit data packets) because the wireless device 102 can be configured to repeatedly transmit the retransmit data packet of the set of retransmit data packets 122 until the headset 112 can verify the PDU data of one of the retransmit data packets 122. For example, wireless device 102 may repeatedly transmit a retransmitted data packet in retransmitted set of data packets 122 until an ACK message is received from headset 112 indicating that headset 112 is able to verify the PDU data of one retransmitted data packet in retransmitted set of data packets 122.
While the transmission of the set of retransmission data packets 122 may allow the headset 112 to receive and verify PDU data (and obtain payload data included therein) that was intended to be located in the initial data packet 120, each transmission of each retransmission data packet in the set of retransmission data packets 122 and each transmission of a corresponding NACK message may incur overhead at both the wireless device 102 and the headset. In particular, each occurrence of transmission/reception of one of the set of retransmission data packets 122 by wireless device 102 and headset 112 and reception/transmission of a corresponding NACK message may accordingly result in a certain amount of additional power being consumed by wireless device 102 and headset 112, and additionally, a certain amount of time that may have otherwise been allocated to the continuing data stream. Further, each occurrence of the transmission of one of the set of retransmission data packets 122 by wireless device 102 and the transmission of a corresponding NACK message by headset 112 may occupy the wireless channel on which logical link 116 is carried for an additional duration. Other systems and devices (e.g., Wi-Fi systems and devices) sharing a wireless channel may experience delay or interference during additional durations of wireless channel occupancy.
In view of the overhead due to error correction using a set of retransmitted data packets, short-range wireless communications may benefit from a mechanism that reduces the amount of retransmitted data packet set 122 required to successfully pass CRC validation. For example, the PDU data from the initial data packet 120 may be combined with the PDU data from each of the retransmission packets in the set of retransmission packets 122. When combining PDU data across multiple different data packets 120, 122, the PDU data that was originally intended to be transmitted in the initial data packet 120 may be estimated or recovered.
Additionally or alternatively, combining the PDU data across multiple different data packets 120, 122 may facilitate generating one or more bit metrics associated with the PDU data ultimately sent out to higher layers of the headset 112, such as a coder-decoder (CODEC). The one or more quality bit metrics may include information about one or more erroneous bits of those PDU bits issued to higher layers, such as the number of bit errors, the location of the bit errors, and other bit error information. For example, the CODEC of the headset 112 may be capable of recovering erroneous bits of the stream based on one or more bit metrics, attempting to seamlessly stream data that includes a relatively small number of bit errors, concealing bit errors within the stream, and so forth.
To reduce the number of retransmitted data packets, the wireless device may be configured to have a plurality of different operating modes for error reduction. The wireless device configured with the plurality of different operating modes for error reduction may be any wireless device capable of receiving packets over logical link 116, including wireless device 102, headset 112, and/or another illustrated device 104, 106, 108, 110, 114. For example, the headset 112 may receive a data packet (e.g., the initial packet 120) over the logical link 116. The headset 112 may select a first mode of operation for error reduction from a plurality of different modes of operation. Because the logical link 116 may have different characteristics depending on the type of logical link 116 implemented, the headset 112 may select the first mode of operation from among a plurality of modes of operation for error reduction based on the logical link 116. For example, the headset 112 may select a first mode of operation from among a plurality of modes of operation based on whether the logical link 116 includes an ACL link, an A2DP link, an eSCO link, or an ISO link, as the selected first mode of operation may be more tailored to the characteristics of a particular type of logical link 116 than other modes of operation.
In accordance with one aspect of the techniques of this disclosure, a first device (such as the headset 112) may establish a logical link associated with short-range communication with a second device (e.g., the wireless device 102). A first device may receive a first packet carried on a logical link. When the first PDU data included in the first packet passes the decoding check, the first device may issue at least a portion of the first PDU data to a higher layer of the first device. When the first PDU data fails the decoding check, the first device may determine a first operation mode from a plurality of operation modes for error correction based on the logical link, the first device may receive a set of retransmission packets on the logical link, each retransmission packet of the set of retransmission packets including corresponding PDU data that is a retransmission of the first PDU data, and the first device may apply the first operation mode for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
In certain aspects, the first device may determine a type of logical link, wherein the first mode of operation for error correction is determined based on the type of logical link. In one aspect, the type of logical link is determined based on at least one of an access address or a logical transmit address (LT _ ADDR) indicated in at least one header of at least one packet received over the logical link.
In one aspect, the logical link comprises one of an ACL link or an A2DP link, and the first mode of operation comprises a soft combining mode based on the ACL link or the A2DP link. In one aspect, when the first packet is associated with a first random number (nonce) for decryption that matches a corresponding random number for decrypting each of the retransmit packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first PDU data of the first packet that includes the first payload data and the first MIC value, and further based on corresponding PDU data of each retransmit packet of a set of retransmit packets that includes the corresponding payload data and the corresponding MIC value. In one such aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted. In another aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets remain encrypted.
In one aspect, when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets. In one such aspect, when the first PDU data packet of the first packet includes a first MIC value and when the corresponding PDU data packet of each of the set of retransmit packets includes a corresponding MIC value, a first mode of operation for error correction is applied without utilizing the first MIC value and without utilizing each of the corresponding MIC values. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted.
In one aspect, when the first mode of operation for error correction comprises a soft combining mode, the first device is to apply the first mode of operation for error correction by: storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check. In one such aspect, each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
In another aspect, the logical link comprises an eSCO link, and the first mode of operation comprises a quality bit mask (QBm) mode based on the eSCO link. When the first mode of operation for error correction comprises the QBm mode, the first device will apply the first mode of operation for error correction by: performing a bit-wise majority function (majority function) based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; and determining a set of bit error quality metrics based on the set of estimated bit values.
In another aspect, the logical link comprises an ISO link, and the first mode of operation for error correction comprises an ISO link-based quality bit mask hybrid (QBm-H) mode. In one such aspect, when the first mode of operation for error correction comprises the QBm-H mode, the first device is to apply the first mode of operation for error correction by: performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; determining a set of bit error quality metrics based on the set of estimated bit values; and discarding one or more additional retransmission packets received after the one retransmission packet and the another retransmission packet in the set of retransmission packets when the one or more additional retransmission packets include a retransmission of the first PDU data of the first packet. In one such aspect, when the first mode of operation for error correction comprises the QBm-H mode, and when the set of retransmission packets comprises three or more retransmission packets, the first device will apply the first mode of operation for error correction by: storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check.
In certain aspects, the first device may generate an estimated CRC value based on a set of estimated bit values obtained based on application of a first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data, and the first device may compare the estimated CRC value to a first CRC value included in a most recently received retransmission packet of the set of retransmission packets and pass a decoding check based on the comparison of the estimated CRC value to the first CRC value, and wherein the set of estimated bit values fails the decoding check when the generated CRC value is different from the first CRC value.
In certain aspects, the first device may generate an estimated MIC value based on the set of estimated bit values, and the first device may compare the estimated MIC value to a first MIC value included in a most recently received retransmission packet of the set of retransmission packets, and pass the set of estimated bit values through a decoding check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, and wherein the set of estimated bit values fail the decoding check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
In an aspect, the first device may issue to a higher layer of the first device a set of estimated bit values obtained based on application of the first mode of operation for error correction, the set of estimated bit values estimated to be at least a portion of the first PDU data. In an aspect, the first device may determine a set of bit errors associated with the set of estimated bit values based on application of a first mode of operation for error correction, and the first device may issue at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of positions of the set of bit errors or a number of the set of bit errors.
One or more of the illustrated wireless devices (e.g., the central wireless device 102, the headset 112) may comprise suitable logic, circuitry, interfaces, processors, and/or code that may be utilized for the error correction techniques described herein when communicating with another device (e.g., the central wireless device 102 or one or more of the peripheral devices 104, 106, 108, 110, 112, 114). The wireless device 102 may be operable to establish a short-range wireless communication connection with at least one of the peripheral devices 104, 106, 108, 110, 112, 114, and the wireless device 102 may establish a logical link 116 with at least one of the peripheral devices 104, 106, 108, 110, 112, 114. For BT, for example, the wireless device 102 may establish a logical link 116 with the intended peripheral device 104, 106, 108, 110, 112, 114 through a Link Manager (LM). For BLE, for example, wireless device 102 may establish a logical link 116 with the intended peripheral device 104, 106, 108, 110, 112, 114 through a Link Layer (LL).
Referring again to fig. 1, in certain aspects, the central wireless device 102 and/or peripheral devices (e.g., the headset 112) may be configured to establish the logical link 116 and select an operating mode from a plurality of operating modes for error correction based on the logical link, as described herein.
Fig. 2 is a block diagram of a wireless device 200 in accordance with certain aspects of the present disclosure. The wireless device 200 can correspond to, for example, the wireless device 102 of fig. 1, and/or one of the peripheral devices 104, 106, 108, 110, 112, 114. In certain configurations, wireless device 200 may be, for example, a BT and/or BLE device configured to apply a first mode of operation for error correction selected from a plurality of modes of operation for error correction based on a logical link established with another wireless device.
As shown in fig. 2, wireless device 200 may include a processing element, such as processor(s) 202, which may execute program instructions for wireless device 200. Wireless device 200 may also include display circuitry 204, and display circuitry 204 may perform graphics processing and provide display signals to a display 242. The processor(s) 202 may also be coupled to a Memory Management Unit (MMU)240, which MMU 240 may be configured to receive addresses from the processor(s) 202 and translate those addresses to locations in memory (e.g., memory 206, ROM 208, flash memory 210), and/or to other circuitry or devices, such as display circuitry 204, radio 230, connector interface 220, and/or display 242. The MMU 240 may be configured to perform memory protections as well as page table translations or builds. In some embodiments, the MMU 240 may be included as part of the processor(s) 202.
As shown, the processor 202 may be coupled to various other circuits of the wireless device 200. For example, wireless device 200 may include various types of memory, a connector interface 220 (e.g., for coupling to a computer system), a display 242, and/or wireless communication circuitry (e.g., for Wi-Fi, BT, BLE, etc.). The wireless device 200 may include multiple antennas 235a, 235b, 235c, 235d for performing wireless communications with other short-range wireless communication devices (e.g., BT devices, BLE devices, etc.).
In certain aspects, wireless device 200 may include hardware and software components (processing elements) configured to separately check the header of a data packet for errors and perform a majority vote (maj ority voting) of the data packet, e.g., using the techniques described herein. Wireless device 200 may also include firmware or other hardware/software for controlling short-range wireless communication operations (e.g., BT operations, BLE operations, etc.). In addition, wireless device 200 may store and execute a WLAN software driver for controlling WLAN operation.
Wireless device 200 may be configured to implement some or all of the error correction techniques described herein, for example, by executing program instructions stored on a memory medium (e.g., a non-transitory computer-readable memory medium), and/or by hardware or firmware operations. In other embodiments, the error correction techniques described herein may be implemented at least in part by programmable hardware elements such as Field Programmable Gate Arrays (FPGAs), and/or as Application Specific Integrated Circuits (ASICs).
In certain aspects, the radio 230 may include separate controllers configured to control communications for various respective Radio Access Technology (RAT) protocols. For example, as shown in fig. 2, radio 230 may include a Wireless Local Area Network (WLAN) controller 250 configured to control WLAN communications, and a short-range communication controller 252 configured to control short-range communications (e.g., BT communications, BLE communications, etc.). Coexistence interface 254 (e.g., a wired interface) may be used to transmit information between WLAN controller 250 and short-range communication controller 252.
In certain aspects, one or more of WLAN controller 250 and/or short-range communication controller 252 may be implemented as hardware, software, firmware, or some combination thereof.
In certain aspects, the WLAN controller 250 may be configured to communicate with the second device using the WLAN link using all of the antennas 235a, 235b, 235c, 235 d. In certain configurations, the short-range communication controller 252 may be configured to implement a short-range wireless communication protocol stack, such as a BT stack (see, e.g., fig. 3A, infra) and/or a BLE stack (see, e.g., fig. 3B, infra), and communicate with at least one second wireless device using one or more of the antennas 235a, 235B, 235c, 235 d. Short-range communication controller 252 may be configured to apply a first mode of operation for error correction selected from a plurality of modes of operation for error correction based on a logical link established with another wireless device.
Fig. 3A illustrates a BT protocol stack 300 that may be implemented in a wireless device, in accordance with certain aspects of the present disclosure. For example, BT protocol stack 300 may be implemented by one or more of processor(s) 202, memory 206, flash memory 210, ROM 208, radio 230, and/or short-range communication controller 252, e.g., as shown in fig. 2.
Referring to fig. 3A, the BT protocol stack 300 may be organized into lower layer(s), intermediate layer(s), and upper layer(s). The lower layer(s) of BT protocol stack 300 may include a controller stack 306, controller stack 306 may be used for hardware interface management, link establishment, and link management, among others. The middle layer(s) of BT protocol stack 300 may include a host stack 304, which host stack 304 may be used for application (layer) interface management, among other things, to allow applications (layers) to access short-range wireless communications. The upper layer(s) of BT protocol stack 300 may include an application layer 302, which application layer 302 may include one or more applications and one or more profiles that allow the one or more applications to use BT communications.
The controller stack 306 may include a Physical (PHY) layer 322. PHY layer 322 may include, for example, a radio and/or baseband processor. In certain aspects, the PHY layer 322 may define a mechanism for transmitting a bitstream over a physical link or channel connecting the BT devices. The bit stream may be grouped into codewords or symbols and converted into data packets for transmission over a wireless transmission medium. PHY layer 322 may provide an electrical, mechanical, and/or process interface to a wireless transmission medium. PHY layer 322 may be responsible for modulating and demodulating data into Radio Frequency (RF) signals for transmission over the air. The PHY layer 322 may describe physical characteristics of a receiver/transmitter of the wireless device. The physical characteristics may include modulation characteristics, radio frequency tolerance, sensitivity level, etc.
Controller stack 306 may further include a link controller 320. Link controller 320 may be responsible for appropriately formatting data for provision to PHY layer 322 and for retrieval from PHY layer 322. Further, link controller 320 may perform synchronization of links (e.g., logical links, including ACL links, A2DP links, SCO links, eSCO links, ISO links, etc.). Link controller 320 may be responsible for executing commands and instructions issued by link manager 318, including establishing and maintaining links indicated by link manager 318.
Link manager 318 may convert Host Controller Interface (HCI)316 commands into controller-level operations (e.g., baseband-level operations). Link manager 318 may be responsible for tasks such as establishing and configuring links, and managing power change requests. Each type of logical link (e.g., ACL link, A2DP link, SCO link, eSCO link, ISO link, etc.) may be associated with a particular packet type. For example, an SCO link may provide reserved channel bandwidth for communication between a master and a slave and support regular, periodic exchanges of data packets without retransmission. The eSCO link may provide reserved channel bandwidth for communication between the master and slave devices and support regular, periodic exchanges of data packets with retransmissions. Starting from establishing a connection between a master device and a slave device, an ACL link may exist between the master device and the slave device, and a data packet for the ACL link may include encoded information in addition to a payload.
Link manager 318 may communicate with host stack 304 through Host Controller Interface (HCI) 316-for example, link manager 318 may convert HCI 316 commands into controller-level operations (e.g., baseband-level operations). HCI 316 may act as a boundary between lower layers of BT protocol stack 300 (e.g., controller stack 306) and other layers of the BT protocol stack (e.g., host stack 304 and application layer 302). The BT specification may define a standard HCI to support BT systems implemented across two separate processors. For example, a BT system on a computer may implement the lower layers of the stack (e.g., PHY layer 322, link controller 320, and/or link manager 318) using the BT system's own processor. The BT system may implement other layers (e.g., host stack 304 and application layer 302) using the processor of the BT component. However, in certain aspects, BT systems may be implemented on the same processor, and such BT systems may be referred to as "off-host.
The host stack 304 may include at least a logical link control and adaptation protocol (L2CAP) layer 314, a Service Discovery Protocol (SDP) layer 312, a Radio Frequency Communication (RFCOMM) layer 310, and an object exchange (OBEX) layer 316. The L2CAP layer 314 is implemented above the HCI 316 and may communicate over the HCI 316. The L2CAP layer 314 may be primarily responsible for establishing connections across certain existing links (e.g., logical links, including ACL links) and/or requesting certain links (e.g., logical links, including ACL links) when those links are already absent. In addition, the L2CAP layer 314 may implement multiplexing between different higher layer protocols, such as the SDP protocol and the RFCOMM protocol, which may allow different applications to use a single link (e.g., a logical link, including an ACL link). In addition, the L2CAP layer 314 may repacketize (repackage) data packets received from higher layers into a format expected by lower layers. The L2CAP layer 314 may employ the concept of a channel to track where data packets come from and where data packets should go. A channel may be a logical representation of a data flow or stream between an L2CAP layer 314 at a transmitting device (e.g., a master device) and another L2CAP layer 314 at a receiving device (e.g., a slave device).
The SDP layer 312 may define actions for both the server and the client of the BT service. The BT specification defines a service as any feature that can be used by another (remote) BT device. The SDP client may use the reserved channel on the L2CAP link to communicate with the SDP server to discover which services are available. When the SDP client finds a desired service, the SDP client may request a separate connection to use the service. The reserved channel may be dedicated to SDP communications so that a device knows how to connect to the SDP service on any other device. The SDP server may maintain an SDP database that may include a collection of service records describing the services provided by the SDP server. Along with information describing how the SDP client connects to the service, the service record may contain a Universally Unique Identifier (UUID) of the service.
The RFCOMM layer 310 can simulate the serial cabling setup and status of the RS-232 serial port. The RFCOMM layer 310 may be connected to a lower layer of the BT protocol stack 300 through the L2CAP layer 314. By providing serial port emulation, the RFCOMM layer 310 can support legacy serial port applications. The RFCOMM layer 310 may also support an object exchange (OBEX) layer 308.
The OBEX layer 308 may define a communication protocol that may be used by devices to exchange data objects, and data objects may also be defined by the OBEX layer 308. A BT device that wishes to establish an OBEX communication session with another device may be considered a client device. The client may initially issue one or more SDP requests to ensure that other devices can act as servers for OBEX services. If the server device is capable of providing OBEX services, the server device may respond with the OBEX service record of the server device. The OBEX service record may contain the RFCOMM channel number that the client device may use to establish the RFCOMM channel. Further communication between the two devices may be communicated in packets, which may contain requests, responses, and/or data. The format of the packets may be defined by the OBEX session protocol.
The application layer 302 may include at least one application 326, with which the user may interact 326, and with which the at least one application 326 may access BT communications for various functionalities. The application 326 may access the BT communication through one or more profiles 328, and the profiles 328 may describe various different types of tasks. By following the procedures of one or more profiles 328, the application 326 may use BT communications according to the BT specification.
Figure 3B illustrates a BLE protocol stack 350 that may be implemented in a BLE device. For example, BLE protocol stack 350 may be implemented by one or more of processor(s) 202, memory 206, flash memory 210, ROM 208, radio 230, and/or short-range communication controller 252 shown in figure 2.
BLE protocol stack 350 may be organized into three layers, which may include an application layer 352, a host stack 354, and a controller stack 356. The controller stack 356 may be below the host stack 354 and the application layer 352 in the BLE protocol stack 350. Controller stack 356 may include PHY layer 372 and LL 370.
PHY layer 372 may define a mechanism for transmitting a bitstream over a physical link connecting BLE devices. The bit stream may be grouped into codewords or symbols and converted into data packets for transmission on a transmission medium. PHY layer 372 may provide an electrical, mechanical, and process interface to the transmission medium. The shape and nature of the electrical connector, the frequency band used for transmission, the modulation scheme, and similar low-level parameters may be specified by PHY layer 372.
LL370 is responsible for low level communications over PHY layer 372. LL370 manages the sequence and timing for sending and receiving data packets and communicates with other devices regarding connection parameters and data flow control using the LL protocol. LL370 also provides gatekeeper functionality to limit exposure and data exchange with other devices. If filtering is configured, LL370 maintains a list of allowed devices and will ignore all requests for data exchange from devices not on the list. LL370 may also reduce power consumption. In certain aspects, LL370 may comprise a company-specific LL that may be used to discover peer devices (e.g., other devices associated with a company) and establish a secure communication channel therewith. In certain aspects, LL370 may be responsible for communicating data packets between devices in the WPAN. Each data packet may include an access address that specifies a type of logical transport used to carry the data packet. A logical transfer may exist between a master device and a slave device. In addition, some logical transports may carry multiple logical links.
BLE protocol stack 350 may include HCI 374, and HCI 374 may serve as a boundary between lower layers of BLE protocol stack 350 (e.g., controller stack 356) and other layers of BLE protocol stack (e.g., host stack 354 and application layer 352). Additionally, host stack 354 may communicate with a BLE controller in the wireless device (e.g., short-range communication controller 252 in fig. 2) using HCI 374. LL370 may use HCI 374 to communicate with host stack 354 of BLE protocol stack 350. While some BLE systems may be "off-host" in that host stack 354 and controller stack 356 may be implemented on the same processor, HCI 374 may also allow host stack 354 to communicate with a different controller stack 356, such as when controller stack 356 is implemented on a second processor.
Host stack 354 may include Generic Access Profile (GAP)360, generic attribute protocol (GATT)362, Security Manager (SM)364, attribute protocol (ATT)366, and L2CAP layer 368. The L2CAP layer 368 may encapsulate multiple protocols from upper layers into a data packet format (or vice versa). The L2CAP layer 368 may also split a packet with a large data payload from an upper layer into multiple packets, where the data payload is segmented into smaller sized data payloads that fit the maximum payload size (e.g., twenty-seven bytes) of the transmitting side. Similarly, the L2CAP layer 368 may receive multiple data packets carrying a data payload that has been segmented, and the L2CAP layer 368 may combine the segmented data payload into a single data packet carrying a data payload to be sent to an upper layer (e.g., the application layer 352).
ATT 366 includes a client/server protocol based on attributes associated with BLE devices configured for a particular purpose (e.g., monitoring heart rate, temperature, broadcasting advertisements, etc.). Attributes may be discovered, read, and written by peers. The set of operations performed on ATT 366 may include, but is not limited to, error handling, server configuration, lookup information, read operations, write operations, queued writes, and the like. ATT 366 may form the basis for data exchange between BLE devices.
SM 364 may be responsible for device pairing and key distribution. The security manager protocol implemented by the SM 364 may define how to perform communication with the SM of the counterpart BLE device. The SM 364 provides additional cryptographic functionality that may be used by other components of the BLE protocol stack 350. The architecture of SM 364 used in BLE is designed to minimize resource requirements for peripheral devices by shifting work to a presumably more powerful central device. BLE uses a pairing mechanism for key distribution. The SM 364 provides a mechanism for not only encrypting data but also providing data authentication.
Above the host stack 354 in the BLE protocol stack 350, the application layer 352 may include applications 358, such as user applications that interface with the host stack 354 of the BLE protocol stack 350 through BLE communications for various functionalities.
Referring back to the host stack 354, the GATT 362 may provide a service framework using attribute protocols for discovery services, as well as for reading and writing property values on peer devices. GATT 362 may interface with application 358, for example, through a configuration file that may define a set of attributes, as well as any permissions needed to use those attributes in BLE communications. The GAP 360 may provide an interface for the application 358 to initiate, establish, and manage connections with other BLE devices.
In certain aspects, wireless devices (e.g., wireless device 102, wireless device 200) may be configured to communicate according to different standards and/or protocols. For example, a wireless device may be configured to utilize both BT and BLE for short-range wireless communications. Thus, a wireless device may be configured with both BT protocol stack 300 and BLE protocol stack 350. In certain aspects, one or more layers may be configured for both BT protocol stack 300 and BLE protocol stack 350-e.g., L2CAP layers 314, 368 of protocol stacks 300, 350 may be configured for dual mode short range wireless communication using BT or BLE.
Fig. 4A is a diagram illustrating a data packet 400 in accordance with certain aspects of the present disclosure. The data packet may be used with various short-range wireless communication technologies such as BT. Data packet 400 may include preamble 402, sync word 404, trailer 406, PDU 412, and CRC 414. In some configurations, data packet 400 may not include CRC 414.
In some configurations, PDU 412 may include a header 422, a payload 424, and a MIC 426. The MIC includes information that may be used to authenticate a data packet, for example, when the data packet is encrypted. In other words, the MIC may be used by the receiving device to confirm that the message is from the declared sending device (e.g., data packet authenticity), and to confirm that the payload 424 is unchanged (e.g., data packet integrity). The MIC protects both the payload integrity and the authenticity of data packet 400 by enabling a receiving device, which also possesses a secret key, to detect any changes to payload 424.
In certain aspects, header 422 of PDU 412 may include a plurality of fields, including at least LT _ ADDR 428. LT _ ADDR may indicate a logical transfer address. LT _ ADDR 428 may be associated with a logical link. For example, the logical transport address included in LT _ ADDR 428 may indicate the type of logical link (e.g., ACL, A2DP, eSCO, ISO, etc.).
Fig. 4B is a diagram illustrating a data packet 450 according to certain aspects of the present disclosure. The data packet may be used with various short-range wireless communication technologies, such as BLE. The data packet 450 may include a preamble 452, an access address 454, a PDU 456, and a CRC 458. In some configurations, data packet 450 may not include CRC 458.
In some aspects, access address 454 may set an address for a link layer (e.g., link layer 370) connection. For example, access address 454 may include an address indicating the type of logical link (e.g., ACL, A2DP, eSCO, ISO, etc.).
In some configurations, PDU 456 may include a header 462, a payload 464, and a MIC 468. The MIC includes information that may be used to authenticate a data packet, for example, when the data packet is encrypted. In certain aspects, the header 462 of the PDU 456 may include a plurality of fields, including at least a Logical Link Identifier (LLID).
Fig. 5 illustrates a wireless communication system 500 in accordance with various aspects of the disclosure. The wireless communication system 500 may include two devices 502, 550. In certain aspects, one device 550 may be a source device. For example, device 550 may be device 102 of fig. 1. The other device 502 may be a sink device. For example, device 502 may be headset 112 of fig. 1. Here, device 502 may be referred to as sink device 502, and device 550 may be referred to as source device; however, these labels are not intended to limit the scope of the present disclosure.
Sink device 502 may be configured to transmit packets using one or more mechanisms for security and/or integrity. Accordingly, sink device 502 can include an encryption component 504, a CRC generation component 506, and a whitening component 508. Encryption component 504 can encrypt the packet according to any of a number of different encryption algorithms or protocols, such as Advanced Encryption Standard (AES) or AES counter with cipher block chaining message authentication code (CBC-MAC) (CCM) (AES-CCM). In one aspect, the encryption component 504 may generate a MIC value based on the data to be transmitted, and the encryption component 504 may append the MIC value to the data to be included in the payload of the packet.
CRC generation component 506 may be configured to generate a CRC value based on data, which may include an additional MIC value. In certain aspects, CRC generation component 506 may generate a CRC value based on a PDU (e.g., a PDU that includes a header, a payload, and a MIC value). The CRC value may be appended to the packet following the PDU. The whitening component 508 may be configured to whiten (whiten) the data, such as by applying a whitening transformation to the data. The packets may then be provided to an RF interface, which may provide data to the RF front-end circuitry for transmission via the transmit chain of sink device 502.
According to various aspects, sink device 502 may include more or fewer components. For example, sink device 502 may include a component for Forward Error Correction (FEC) encoding that may encode packets with FEC (e.g., encode packets with redundancy using an error correction code). The components for FEC encoding may logically appear after the whitening component 508, for example, such that packets are encoded with FEC after data whitening. In another example, sink device 502 may include components for mode mapping. For mode mapping, the bit code of a packet may be mapped to input bits, resulting in an expansion of the data associated with FEC encoding to facilitate recovery of the data by the receiver. Thus, the components for mode mapping may logically appear after the components for FEC encoding.
In yet another example, sink device 502 may include a component for encoding that may encode at least a portion of a packet prior to transmission. The components for encoding may logically appear after the whitening component 508, e.g., such that the packet is encoded after the data whitening.
When sink device 502 receives a packet, the packet may be received by the RF front-end circuitry via the receive chain of sink device 502, and RF interface 510 may provide the packet to a de-whitening (de-whitening) component 512. The de-whitening component 512 can de-whiten data included in the PDU of the received packet, which can include applying an inverse of the whitening transform used to whiten the data.
In certain aspects, sink device 502 may include a component for FEC decoding that may decode packets with FEC (e.g., decode redundancy in packets using an error correction code). The components for FEC decoding may logically appear before the de-whitening component 512, e.g., such that packets are decoded with FEC before data de-whitening. In another example, sink device 502 may include a component for mode demapping. For mode mapping, the bit codes of the packets may be de-mapped to data bits, e.g., to facilitate recovery of the data by sink device 502. Thus, the components for mode demapping may logically precede the components for FEC decoding.
In yet another aspect, sink device 502 may include a component for decoding that may decode at least a portion of a packet after reception. The component for decoding may logically appear before the de-whitening component 512, e.g., such that the packet is decoded before data de-whitening.
The received packets (including the initial data packet and one or more retransmissions of the initial data packet) may be provided to an error correction component 520. As described in this disclosure, the error correction component 520 may be configured to detect errors in retransmitted packets. Error correction component 520 can attempt to correct any errors detected in the retransmitted packet, and if error correction component 520 is unable to generate an error-free packet to correct the errors, error correction component 520 can generate a set of bit error quality metrics.
The error correction component 520 may provide the packet (e.g., estimated based on the initial packet and the retransmitted packet) and, if applicable, the set of bit error quality metrics to the CRC check component 514. CRC check component 514 can generate a CRC value based on the packet from error correction component 520 and compare the generated CRC value to a CRC value indicated in the packet. If the CRC check component 514 determines that the generated CRC value matches the CRC value indicated in the packet, the packet may pass at least a portion of the decoding check and the CRC check component 514 may provide the packet to the decryption component 516.
If the CRC check component 514 determines that the generated CRC value does not match the CRC value indicated in the packet, the packet may fail the decoding check. In this case, the packet may still be provided to higher layers (e.g., CODECs) along with the set of bit error quality metrics to attempt to reconstruct the data even with error(s), or sink device 502 may send a NACK message to source device 550 to indicate that the packet was not successfully decoded.
When the decryption component 516 obtains the packet, the decryption component 516 may apply at least one of any number of decryption algorithms or protocols, such as AES-CCM, E0, or the like, to decrypt the packet. The packets may then be provided to higher layers (e.g., CODECs) for output by sink device 502, e.g., for streaming audio or video.
The decryption component 516 of the sink device 502 and the source device 550 may agree on at least one random number for decryption of the data packet. In one aspect, a random number may be agreed upon between the decryption component 516 and the source device 550 for at least one set of packets, such as the initial data packet 562 and the retransmitted data packet 564. In another aspect, the decryption component 516 and the source device 550 may agree upon a first random number for decryption of one set of data packets (e.g., the initial data packet 562) and at least one other random number for decryption of another set of data packets (e.g., the retransmitted data packet 564).
For communication of packets, source device 550 may establish a short-range wireless communication link with sink device 502. The short range wireless communication link may be, for example, a BT link or a BLE link. In connection with this, source device 550 and sink device 502 may establish logical link 552. In various aspects, the logical link 552 may be one of an ACL link, an A2DP link, an eSCO link, or an ISO link. Source device 550 may transmit data packets to sink device 502 over logical link 552. In some configurations, sink device 502 may respond to a received data packet with feedback, such as an ACK message when the data packet was successfully decoded by sink device 502, or a NACK message when the data packet was not successfully decoded.
Source device 550 may transmit first packet 560, and first packet 560 may be received by sink device 502. The first packet 560 may be associated with the establishment of the logical link 552. The first packet 560 may include a header portion. In an aspect, the header portion may be included in a PDU of the first packet 560 (e.g., the header 422 of the PDU 412 of the packet 400). In another aspect, the first packet 560 may include an access address (e.g., access address 454) separate from a PDU (e.g., PDU 456).
The packet may include an address indicating the type of logical link 552. For example, the first packet 560 may include a header portion that includes an LT _ ADDR (e.g., for BT communications), or the first packet 560 may include an access address (e.g., for BLE communications). Sink device 502 may determine the type of logical link 552 based on the access address or LT _ ADDR indicated in the header portion of first packet 560. For example, sink device 502 can determine whether logical link 552 is an ACL link, an A2DP link, an eSCO link, or an ISO link.
When logical link 552 is established, sink device 502 may be configured to receive data packets over the established logical link 552. For example, source device 550 may send initial data packet 562 over logical link 552. Initial data packet 562 may include, for example, data to be output by sink device 502. For example, the initial data packet 562 may include audio data, video data, and the like.
Sink device 502 may receive initial data packet 562 at RF interface 510. The de-whitening component 512 can obtain the initial data packet 562 provided by the RF interface 510, and the de-whitening component 512 can de-whiten the data (e.g., PDU) of the initial data packet 562.
Sink device 502 may then apply a decode check to initial data packet 562. Error correction component 520 may obtain initial data packet 562 as it is received, but may refrain from applying error correction until a decoding check is applied to determine, for example, whether initial data packet 562 includes one or more errors. The decode check may include a CRC validation and, if applicable, a MIC validation (e.g., when the initial data packet is encrypted).
CRC check component 514 can obtain initial data packet 562. The CRC check component 514 can generate a CRC value based upon the initial data packet 562 (e.g., based upon the payload, and if applicable, a MIC value included in a PDU of the initial data packet 562). CRC check component 514 can compare the generated CRC value to a CRC value indicated in initial data packet 562 (e.g., after a PDU of initial data packet 562). If the generated CRC value matches the CRC value indicated in the initial data packet 562, the initial data packet 562 may be CRC verified and may pass, at least in part, a decoding check. The CRC-verified initial data packet 562 can be provided to the decryption component 516. If the generated CRC value does not match the CRC value indicated in the initial data packet 562, then CRC check component 514 can determine that the initial data packet 562 is not CRC verified and fails the decoding check.
If the initial data packet is encrypted, the decryption component 516 may decrypt the initial data packet 562 and obtain a decrypted payload and a decrypted MIC value. The decryption component 516 may generate a MIC value based on the decrypted payload and compare the generated MIC value to the decrypted MIC value. If the generated MIC value matches the decrypted MIC value (and the CRC check component 514 has verified the initial data packet 562), the initial data packet 562 may pass the decode check.
When the initial data packet passes the decode check, the payload of the PDU of the initial data packet 562 may be passed to higher layers (e.g., receiver buffer, CODEC, etc.). In certain aspects, sink device 502 may send a feedback message to source device 550 indicating an ACK to indicate that initial data packet 562 was successfully received and decoded.
If the generated MIC value does not match the decrypted MIC value, the initial data packet 562 may fail the decode check (even though the initial data packet 562 may be CRC-verified). When the initial data packet 562 fails the decoding check, then the error correction component 520 can obtain a set of retransmission packets for error correction of the initial data packet 562. In certain aspects, sink device 502 may send a feedback message 582 indicating a NACK to the source device to indicate that initial data packet 562 was not successfully decoded.
The source device 550 may transmit the set of retransmitted data packets 564. For example, the source device may transmit the first retransmission data packet of retransmission data packet set 564 in response to the feedback message indicating NACK received from sink device 502. Sink device 502 can receive the first retransmission data packet of the set of retransmission data packets 564, and error correction component 520 can obtain the first retransmission data packet of the set of retransmission data packets 564 from de-whitening component 512.
Error correction component 520 may be configured with multiple modes of operation for error correction of data packets. The plurality of operating modes for error correction may include at least a soft combining mode, a quality bit mask (QBm) mode, and a quality bit mask hybrid (QBm-H) mode. Illustrative aspects of the modes of operation may be described herein.
Error correction component 520 can select and apply one of a plurality of operating modes for error correction. To select one mode of operation, error correction component 520 may first determine the type of logical link 552. Error correction component 520 may determine the type of logical link 552 based on at least one of an access address or LT _ ADDR, which may be included in first packet 560 and/or initial data packet 562. The access address or LT _ ADDR may indicate the type of logical link 552 to error correction component 520.
Each of the plurality of operating modes may be associated with at least one of a type of logical link. For example, when logical link 552 comprises an ACL link or an A2DP link, error correction component 520 can select a soft combining mode. When logical link 552 comprises an eSCO link, error correction component 520 can select QBm mode. When logical link 552 comprises an ISO link, error correction component 520 can select QBm-H mode. When the initial data packet 562 fails a decoding check (e.g., fails a CRC validation and/or fails a MIC validation), the error correction component 520 can apply the selected mode of operation 526.
In various aspects of the operational mode 526, if the initial data packet 562 and the retransmitted data packet set 564 are encrypted, the selected operational mode 526 may be applied to the encrypted PDUs of the data packets 562, 564 or the decrypted PDUs of the data packets 562, 564. In addition, the selected soft combining mode of operation 526 may be applied to the payload of the PDUs of the data packets 562, 564 (without the MIC) or to both the payload and the MIC of the PDUs of the data packets 562, 564.
When the first random number agreed for decryption of the initial data packet 562 matches one or more corresponding random numbers agreed for decryption of each of the set of retransmitted data packets 564, then the selected soft combining mode of operation 526 may be applied to both the payload and MIC values of the initial data packet 562 and the set of retransmitted data packets 564. When the first random number agreed upon for decryption of the initial data packet 562 is different from the at least one random number agreed upon for decryption of the at least one of the set of retransmission data packets 564, then the selected soft combining mode of operation 526 may only be applied to the payloads of the PDU data of the initial data packet 562 and the set of retransmission data packets 564. In other words, the MIC values included in the PDU data for the initial data packet 562 and the retransmitted data packet set 564 may be excluded from the application of the selected soft combining mode of operation 526.
In application of the selected soft combining mode of operation 526, the error correction component 520 may store each soft value in the set of soft values in each buffer in the set of buffers. For example, each bit of the initial data packet 562 may be mapped to a three-bit signed soft value. That is, each bit in the bit array that includes the PDU data (e.g., payload, and if applicable, MIC value) of the initial data packet 562 may be stored as a three-bit signed soft value in each of the buffer arrays. In other words, bit i of the PDU data of the initial data packet 562 may be stored as a three-bit signed soft value in the buffer index i. The 1 bit of the PDU data of the initial data packet 562 may be stored as a-1 soft value (e.g., - '3sd1), and the 0 bit of the PDU data of the initial data packet 562 may be stored as a 0 soft value (e.g., +'3sd0, and the 0 soft value may be considered a positive-sign soft value).
Further to the application of the selected soft combining mode of operation 526, for each retransmitted data packet in the set of retransmitted data packets 564, each soft value in the set of soft values stored in each buffer may be accumulated with another three-bit signed soft value based on the corresponding bit of the PDU data for each retransmitted data packet in the set of retransmitted data packets 564. For example, bit i of the PDU data of the first retransmission data packet in retransmission data packet set 564 may be accumulated with the three-bit signed soft value in buffer index i. The 1 bit of PDU data of the first retransmit data packet in the set of retransmit data packets 564 may be accumulated as a-1 soft value (e.g., - '3sd1), and the 0 bit of PDU data of the first retransmit data packet in the set of retransmit data packets 564 may be accumulated as a +1 soft value (+3' sd 1).
In certain aspects, the set of buffers may saturate at a minimum and a maximum, which may prevent buffer underflow or overflow. For example, each buffer may saturate at a maximum value of +3(+3'sd3) and at a minimum value of-4 (-3' sd 4). Accordingly, the buffer index i may not exceed the minimum or maximum value, and the additional bits i of the additional PDU data from the additional retransmitted data packets in the set of retransmitted data packets 564 may cause the soft values in the buffer index i to remain at the saturated minimum or maximum value.
After the bits of the PDU data of the retransmitted data packet in the set of retransmitted data packets 564 are accumulated in the set of buffers, the three-bit signed soft value in the set of buffers may be "hard sliced" or mapped to one bit value in the set of estimated bit values. When the buffer index i is greater than or equal to 0(3' sd0), then 0 may be mapped to a bit value in the set of estimated values. When the buffer index i is less than 0(3' sd0), then a 1 may be mapped to a bit value in the set of estimated values. This set of estimated bit values may represent an estimate (e.g., payload, and, if applicable, MIC value) of the PDU data of the initial data packet 562.
The set of estimated bit values may then be provided as a data packet to CRC check component 514 and decryption component 516, and CRC check component 514 and decryption component 516 may determine whether this set of estimated bit values passes a decoding check (e.g., a CRC validation, and if applicable, a MIC validation). For example, CRC check component 514 can generate a CRC value based on the set of estimated bit values and can compare the generated CRC value to a CRC value included in a most recently received data packet in retransmission data packet set 564. Similarly, decryption component 516 may generate a MIC value based on the set of estimated bit values and may compare the generated MIC value to a MIC value included in a most recently received data packet in retransmitted data packet set 564.
The set of estimated bit values may be provided to higher layers (e.g., receiver buffers, CODECs, etc.) if the set of estimated bit values results in the data packet passing the decoding check. In one aspect, if the set of estimated bit values results in the data packet failing the decoding check, sink device 502 may send a feedback message 582 indicating a NACK for the most recently received retransmission data packet of the set of retransmission data packets. In another aspect, if the set of estimated bit values results in the data packet failing the decoding check, sink device 502 may still provide the set of estimated bit values to a higher layer (e.g., receiver buffer, CODEC, etc.), and potentially the higher layer may recover the bit error or may conceal the bit error. For example, when the number of retransmitted data packet sets 564 is limited to a maximum threshold, the last retransmitted data packet before the maximum threshold is received, and the set of estimated bit values still fails the decoding check, the set of estimated bit values may still be provided to higher layers.
In certain aspects, the error correction component 520 may generate a set of bit error quality metrics based on the set of estimated bit values, and the set of bit error quality metrics may indicate a location and/or a number of one or more potential bit errors — e.g., at an index of the set of estimated bit values where a three-bit signed soft value is 0 at a hard slice. The error correction component 520 may provide a set of bit error quality metrics to higher layers, e.g., to facilitate recovery of bit errors.
When the logical link 552 comprises an eSCO link, the selected operating mode 526 can comprise an QBm mode. For the QBm mode, the error correction component 520 may perform a bit-wise majority function based on: bits of PDU data of the initial data packet 562, bits of PDU data of a first retransmission data packet in the set of retransmission data packets 564, and bits of PDU data of a second retransmission data packet in the set of retransmission data packets 564.
According to one aspect of the bit-wise majority function, the error correction component 520 may capture the initial data packet 562 in a first buffer, and the CRC check component 514 and the decryption component 516 (if applicable) may determine whether the initial data packet 562 passes the decoding check. When the initial data packet 562 fails the decoding check and the first retransmitted data packet in the set of retransmitted data packets 564 is received, the CRC check component 514 and the decryption component 516 (if applicable) may determine whether the first retransmitted data packet passes the decoding check. If so, the first retransmitted data packet may be passed to higher layers and the error correction component 520 may avoid any further error correction of the initial data packet 562.
When the first retransmitted data packet fails the decoding check, each bit of the PDU data (e.g., payload, and if applicable, MIC value) of the initial data packet 562 may be XOR' ed with a corresponding bit of the PDU data of the first retransmitted data packet of the set of retransmitted data packets 564. The result of each XOR operation may be captured into a second buffer. In addition, a set of bit error quality metrics may be calculated based on the initial data packet 562 and the first retransmitted data packet. For example, the set of bit error quality metrics may indicate the number and/or location of bit errors in which bit i in the PDU data of the initial data packet 562 does not match the corresponding bit i in the PDU data of the first retransmitted data packet. In certain aspects, the result of the XOR operation indicates the location of the bit error.
Further, a second retransmission data packet in the set of retransmission data packets 564 may be received when the first retransmission data packet fails the decoding check. A second retransmitted data packet in the set of retransmitted data packets 564 may be captured in a third buffer. The CRC check component 514 and the decryption component 516 (if applicable) can determine whether the second retransmitted data packet passes the decoding check. If so, the second retransmission data packet may be passed to higher layers and the error correction component 520 may avoid any further error correction of the initial data packet 562.
When the second retransmission data packet fails the decoding check, each bit of the PDU data (e.g., payload, and if applicable, MIC value) of the initial data packet 562 may be XOR' ed with a corresponding bit of the PDU data of the second retransmission data packet in the set of retransmission data packets 564. The result of each XOR operation may be captured into a fourth buffer. For the first and second retransmitted data packets, each bit of the PDU data (e.g., payload, and if applicable, MIC value) of the first retransmitted data packet may be XOR' ed with a corresponding bit of the PDU data of the second retransmitted data packet in the set of retransmitted data packets 564. The result of each XOR operation may be captured into a fifth buffer.
Based on the bits of the PDU data of the initial data packet 562, the first retransmission data packet, and the second retransmission data packet, the error correction component 520 can generate a set of bit error quality metrics. The set of bit error quality metrics may indicate a number and/or location of bit errors for the PDU data across the initial data packet 562, the first retransmitted data packet, and the second retransmitted data packet. For example, when bit i is the same in two data packets but different in the other data packet, the set of bit error quality metrics may indicate that bit i is likely to be erroneous in the set of estimated bit values.
Based on the results of the XOR operations in the second, fourth, and fifth buffers, error correction component 520 may perform a bit-wise majority vote (vote). The error correction component 520 may generate the set of estimated bit values based on a bit-by-bit majority vote by determining that a bit i of the set of estimated bit values is equal to a bit value at a bit i of the at least two data packets. For example, if the initial data packet 562 and the second retransmission data packet each include a 0 bit value at bit i, but the first retransmission data packet includes a 1 bit value at bit i, the error correction component 520 may insert a 0 at bit i in the set of estimated bit values.
The set of estimated bit values may be passed to CRC check component 514 and decryption component 516 in the data packet for decoding checks. If the set of estimated bit values passes the decoding check, the set of estimated bit values may be passed to higher layers. If the set of estimated bit values fails the decoding check, the packet may be discarded or the set of estimated bit values may be passed to a higher layer along with the set of bit error quality metrics (e.g., so that the higher layer may recover bit error or conceal erroneous data).
When logical link 552 comprises an ISO link, selected operational mode 526 may comprise QBm-H mode. The QBm-H pattern may depend on the number of retransmitted sets of data packets 564. For example, for the first three data packets, error correction component 520 may perform a bit-by-bit majority function based on: bits of PDU data of the initial data packet 562, bits of PDU data of a first retransmission data packet in the set of retransmission data packets 564, and bits of PDU data of a second retransmission data packet in the set of retransmission data packets 564. If the error correction component 520 is capable of generating a set of estimated bit values that pass the decoding check from a bit-wise majority function, the set of estimated bit values may be passed to higher layers. In certain aspects, error correction component 520 may determine that a threshold amount of time is reached or a threshold number of data packets are retransmitted, and thus, error correction component 520 may still communicate the set of estimated bit values (and potentially the set of bit error quality metrics) to higher layers. In such an aspect, additional retransmitted data packets (in addition to the first and second retransmitted data packets) may be discarded.
In another aspect, when the error correction component 520 is unable to generate a set of estimated bit values that pass the decoding check, then more than two retransmitted data packets in the set of retransmitted data packets 564 may be received. In such an aspect, the error correction component 520 may switch to a soft combining mode of operation to accumulate a set of three-bit signed soft values in a set of buffers for each of the set of initial data packets 562 and retransmitted data packets. As described herein, the error correction component 520 may generate the set of estimated bit values by hard-slicing or mapping each of the three-bit signed soft values in the set of buffers to bit values in the set of estimated bit values. The error correction component 520 may pass the set of estimated bit values (and potentially the set of bit error quality metrics) to higher layers.
Fig. 6 illustrates a flowchart 600 of operations that may be performed by the sink device 502 of fig. 5, in accordance with various aspects of the present disclosure. At operation 602, the de-whitening component 512 may de-whiten the initial data packet 562. At operation 604, the error correction component 520 may determine whether at least one of the set of operating modes for error correction is enabled. For example, error correction component 520 may determine the type of logical link 552 based on a header of a packet (e.g., first packet 560, initial data packet 562, etc.). If the type of logical link 552 includes an ACL link or an A2DP link, the error correction component 520 can enable the soft combining mode of operation 526. If the type of logical link 552 comprises an eSCO link, the error correction component 520 may enable QBm the mode of operation 526. If the type of logical link 552 comprises an ISO link, the error correction component 520 may enable QBm-H mode of operation 526.
If the error correction component 520 does not enable the operating mode 526 (e.g., because the type of logical link 552 is not one of ACL, A2DP, eSCO, or ISO), the initial data packet 562 can be verified with a decode check. At operation 640, the CRC check component 514 may process a CRC corresponding to the payload of the initial data packet 562. If CRC check component 514 verifies the CRC value of initial data packet 562, decryption component 516 may verify the MIC value (if included) of initial data packet 562. If the decryption component 516 verifies the MIC value of the initial data packet 562, the decryption component 516 may decrypt the payload of the initial data packet 562. At operation 622, the decrypted payload of the initial data packet 562 may be stored and may be provided to higher layers (e.g., receiver buffer, CODEC, etc.). In certain aspects, sink device 502 may send a feedback message 582 indicating an ACK.
If the error correction component 520 does enable the operational mode 526, the error correction component 520 may determine the first random number for the initial data packet 562 or determine whether encryption is disabled for the initial data packet 562 in accordance with operation 606. At operation 608, the error correction component 520 optionally may decrypt 522 the payload of the initial data packet 562 when the initial data packet 562 is encrypted. At operation 610, the error correction component 520 may determine whether the initial data packet 562 is an initial data packet or whether the initial data packet 562 is a retransmitted data packet in the set of retransmitted data packets 564.
When the initial data packet 562 is not a retransmission of another data packet, the error correction component 520 may store (e.g., in a buffer) the initial payload of the initial data packet 562, as shown at operation 612. At operation 614, the error correction component 520 may optionally encrypt 524 the initial payload of the initial data packet 562 (e.g., if the payload of the initial data packet 562 was decrypted according to operation 608).
The initial data packet 562 may be verified using a decoding check. At operation 616, the CRC check component 514 may process a CRC corresponding to the payload of the initial data packet 562. If CRC check component 514 verifies the CRC value of initial data packet 562, decryption component 516 may verify the MIC value (if included) of initial data packet 562. If the decryption component 516 verifies the MIC value of the initial data packet 562, at operation 620, the decryption component 526 may decrypt the payload of the initial data packet 562 when the initial data packet 562 passes the decode check. At operation 622, the decrypted payload of the initial data packet 562 may be stored and may be provided to higher layers (e.g., receiver buffer, CODEC, etc.).
If the initial data packet 562 fails a decoding check (e.g., a CRC validation or a MIC validation), the first retransmitted data packet in the set of retransmitted data packets 564 may be received (e.g., the sink device may send a feedback message 582 indicating a NACK to request at least one retransmitted data packet in the set of retransmitted data packets 564). Returning to operation 602, the de-whitening component 512 can de-whiten the first retransmission data packet. If the operational mode 526 is not enabled, the first retransmitted data packet may be verified with a decoding check.
At operation 640, the CRC check component 514 may process the payload of the first retransmission data packet to generate a CRC value and determine whether the CRC value included with the first retransmission data packet matches the generated CRC value. At operation 642, the decryption component 516 may process the MIC of the first retransmitted data packet to generate a MIC value and determine whether the MIC value included with the first retransmitted data packet matches the generated MIC value.
The first retransmission data packet may pass the decoding check if both the generated CRC value and the generated MIC value match the CRC value and MIC value, respectively, included in the first retransmission data packet. Sink device 502 may send a feedback message 582 indicating an ACK. At operation 620, the decryption component 516 may decrypt the first retransmitted data packet (if encrypted). At operation 622, the payload of the first retransmission data packet may be stored (e.g., to be provided to higher layers).
The first retransmission data packet may fail the decoding check if the generated CRC value or the generated MIC value does not match the CRC value or the MIC value, respectively, included in the first retransmission data packet. Sink device 502 may transmit a feedback message 582 indicating a NACK. Sink device 502 can receive the second retransmission data packet of retransmission data packet set 564.
Returning to operation 604, for the first retransmitted data packet, when the operational mode 526 is enabled, the error correction component 520 may determine whether the corresponding random number agreed to for the first retransmitted data packet matches the first random number agreed to for the initial data packet 562, or may determine whether the first retransmitted data packet is encrypted. When the first random number does not match the corresponding random number, then the error correction component 520 optionally may decrypt 522 the payload of the first retransmitted data packet in accordance with operation 608. When the first random number matches the corresponding random number or encryption is disabled, then the error correction component 520 may determine which transmission/retransmission corresponds in sequence to the first retransmitted data packet, as shown in operation 610.
Because the first retransmitted data packet is the first of the set of retransmitted data packets 564, the error correction component may apply the selected operating mode 526, which may be one of a soft combining mode, QBm mode, or QBm-H mode. Accordingly, at operation 624, the error correction component 520 may generate and store a corrected payload (e.g., a set of estimated bit values), and, if applicable, a MIC value. Further to operation 624, the error correction component 520 may generate and store a set of bit error quality metrics based on the application of the selected operating mode 526.
At operation 626, if the payload of the first retransmission data packet is decrypted according to operation 608, the error correction component 520 may encrypt 524 the payload of the first retransmission data packet 562. At operation 628, the CRC check component 514 can process the payload of the first retransmission data packet to generate a CRC value and determine whether the CRC value included with the first retransmission data packet matches the generated CRC value. At operation 630, if encryption is enabled, the decryption component 516 may process the MIC of the first retransmitted data packet to generate a MIC value and determine whether the MIC value included with the first retransmitted data packet matches the generated MIC value.
The first retransmission data packet may pass the decoding check if both the generated CRC value and the generated MIC value match the CRC value and MIC value, respectively, included in the first retransmission data packet. Sink device 502 may send a feedback message 582 indicating an ACK. At operation 620, the decryption component 516 may decrypt the first transmitted data packet (if encrypted). At operation 622, the payload of the first retransmission data packet may be stored (e.g., to be provided to higher layers).
The first retransmission data packet may fail the decoding check if the generated CRC value or the generated MIC value does not match the CRC value or the MIC value, respectively, included in the first retransmission data packet. Sink device 502 may transmit a feedback message 582 indicating a NACK. Sink device 502 can receive the second retransmission data packet of retransmission data packet set 564.
The sink device 502 may receive the second retransmission data packet and the de-whitening component 512 may de-whiten the second retransmission data packet, as shown in operation 602. At operation 604, if the operational mode 526 is disabled, the second retransmission data packet may be processed for decoding checking, as described herein with respect to operations 640 and 642.
Returning to operation 604, for the second retransmitted data packet, when the operational mode 526 is enabled, the error correction component 520 may determine whether the corresponding random number agreed to for the second retransmitted data packet matches the first random number agreed to for the initial data packet 562, or may determine whether the second retransmitted data packet is encrypted. When the first random number does not match the corresponding random number, then the error correction component 520 optionally may decrypt 522 the payload of the second retransmission data packet in accordance with operation 608. When the first random number matches the corresponding random number or encryption is disabled, then the error correction component 520 may determine which transmission/retransmission corresponds in sequence to the second retransmitted data packet, as shown in operation 610.
Because the second retransmitted data packet is the second of the set of retransmitted data packets 564, the error correction component may apply the selected operating mode 526, which may be one of a soft combining mode, QBm mode, or QBm-H mode. Accordingly, at operation 632, the error correction component 520 may generate and store the corrected payload and, if applicable, the MIC value with the second retransmission data packet. For example, as described herein, the error correction component 520 may generate a set of estimated bit values based on the initial data packet 562 and the set of retransmitted data packets 564.
The set of estimated bit values may include the bits of PDU data for the initial data packet 562 that are estimated to be correct, and thus, the set of estimated bit values may include each bit of the MIC value for the payload that is estimated to be correct, as well as each bit of the MIC value for the most recently received retransmission data packet in the set of retransmission data packets 564 that is estimated to be correct (as the MIC value may be verified based on the MIC value of the most recently received retransmission data packet in the set of retransmission data packets 564), if applicable. Further to operation 632, the error correction component 520 may generate and store a set of bit error quality metrics based on application of the selected operating mode 526 with the second retransmission data packet.
At operation 634, if the payload of the second retransmission data packet is decrypted according to operation 608, the error correction component 520 may encrypt 524 the corrected payload (e.g., the set of estimated bit values) generated by the error correction component 520. At operation 636, the CRC check component 514 may process the corrected payload (e.g., the set of estimated bit values). The error correction component 520 may provide the data packet comprising the set of estimated bit values to the CRC check component 514, and the CRC check component 514 may generate a CRC value and determine whether a CRC value included in a most recently received retransmitted data packet (e.g., a second retransmitted data packet) in the set of retransmitted data packets 564 matches the generated CRC value. At operation 638, if encryption is enabled, the decryption component 516 may process the MIC of the second retransmitted data packet to generate a MIC value and determine whether the MIC value included in the most recently received retransmitted data packet (e.g., the second retransmitted data packet) in the set of retransmitted data packets 564 matches the generated MIC value.
The set of estimated bit values may pass the decoding check if both the generated CRC value and the generated MIC value match the CRC value and MIC value, respectively, in the most recently received retransmitted data packet (e.g., the second retransmitted data packet) included in the set of retransmitted data packets 564. Sink device 502 may send a feedback message 582 indicating an ACK. At operation 620, the decryption component 516 may decrypt the set of estimated bit values (if encrypted). At operation 622, the set of estimated bit values may be stored (e.g., to be provided to higher layers).
As shown in the method 600, when the set of retransmission data packets 564 includes more than two retransmission data packets, a subset of operations including one or more of the operations 602, 604, 606, 608, 610, 620, 622, 632, 634, 636, 638 may be performed. Thus, sink device 502 may iterate through method 600 until a corrected payload is determined by applying selected operational mode 526, until the corrected payload passes a decoding check (e.g., a CRC check, and, if applicable, a MIC check), or until a threshold number of retransmitted data packets is reached and the corrected payload is passed to higher layers along with a set of bit error quality metrics.
Fig. 7 illustrates an aspect 700 of a soft combining mode of operation in accordance with various aspects of the present disclosure. For example, in the context of fig. 5, when logical link 552 includes an ACL link or an A2DP link, sink device 502 may perform a soft combining mode of operation. In the context of fig. 6, as described with respect to operations 632, 634, 636, and 638, sink device 502 may apply a soft-combining mode of operation to generate a corrected payload (e.g., a set of estimated bit values).
When the source device and sink device establish a logical link comprising an ACL link or an A2DP link and the sink device selects a soft combining mode of operation accordingly, the source device may transmit an initial data packet with TX message a 706a (i.e., the expected set of bits). TX message a 706a may include PDU data, and thus TX message a 706a may include payload data, and in some aspects may include a MIC value.
During transmission of TX message a 706a, one or more bit errors 708a may occur in TX message a 706a, e.g., due to interference or other channel conditions. Thus, TX message a 706a may be received by the sink device as RX message a712a, which may include a set of bits with one or more bit errors 708 a.
The sink device may buffer 716a the RX message a712a in a set of buffers (e.g., in an indexed buffer array). For example, when RX message a712a is encrypted, the sink device may buffer 716a RX message a712a without first decrypting RX message a712 a. However, in another example, the sink device may first decrypt RX message a712 a.
Because the sink device may be applying a soft combining mode of operation, the sink device may buffer 716a each bit of RX message a712a as a soft value in a set of buffers. For example, RX message a712a may have n bits, and for an index i equal to 0 to n-1 (where the first bit of the PDU data is indexed at 0), bit i of the PDU data of RX message a712a may be buffered 716a in buffer index i as a three-bit signed soft value. The 1 bit of the PDU data of RX message a712a may be stored as a-1 soft value (e.g., - '3sd1), and the 0 bit of the PDU data of RX message a712a may be stored as a 0 soft value (e.g., +'3sd0, and the 0 soft value may be considered a positive-sign soft value). The foregoing examples are provided as illustrations, and different values may be buffered in association with the set of bits comprising RX message a712a (e.g., bit values may be buffered as unsigned values, soft values may be greater or less than three bits, 0 and 1 bit values may be stored as soft values other than-1 and 0, etc.) without departing from the scope of this disclosure.
The sink device may decode 718a the RX message a712a, and in certain aspects, the sink device may decode 718a the RX message a712a in real-time while also buffering the RX message a712 a. When RX message a712a is decoded, the sink device may perform a decode check, which may include at least a CRC validation and, if RX message a712a is encrypted, a MIC validation. Accordingly, the sink device may perform CRC validation on RX message a712 a. Due to the one or more bit errors 708a, the sink device may determine that the CRC value generated based on RX message a712a does not match the CRC value (included in the initial data packet) for TX message a 706 a. Thus, the sink device may determine that RX message a712a fails CRC validation 720 a.
Additionally, when RX message a712a is encrypted, the sink device may perform MIC verification on RX message a712 a. Due to one or more bit errors 708a, the sink device may determine that the MIC value generated based on RX message a712a does not match the MIC value for TX message a 706a (included in the PDU data of the initial data packet). Thus, the sink device may determine that RX message a712a fails the MIC verification 722 a.
When RX message a712a fails the decode check (e.g., fails CRC validation 720a, and fails MIC validation 722a if encrypted), the sink device may send a NACK message 724a to the source device. In response to NACK message 724a, the source device may transmit TX message B706B.
TX message B706B may be a retransmission of TX message a 706a and, thus, may include a copy of at least the payload data of the PDU data of TX message a 706 a. During transmission of TX message B706B, one or more bit errors 708B may occur in TX message B706B. Thus, TX message B706B may be received by the sink device as RX message B712B, which may include a set of bits with one or more bit errors 708 a.
Because the sink device may be applying soft combining, the sink device may buffer 716B the soft values corresponding to RX message a712a and RX message B712B. In certain aspects, each soft value in the set of soft values buffered 716a in association with RX message a712a may be accumulated with a value (e.g., a signed value) based on a corresponding bit of the PDU data of RX message B712B. For example, the three-bit signed soft value in buffer index i that may be buffered 716a for RX message a712a may be accumulated with the signed value of bit i of the PDU data based on RX message B712B (e.g., added to the signed value of bit i of the PDU data based on RX message B712B). For example, the 1-bit value at index i of the PDU data of RX message B712B may be accumulated with the three-bit signed soft value of buffer 716a at index i to a-1 signed value (e.g., -'3sd 1). The 0-bit value at index i of the PDU data of RX message B712B may be accumulated with the three-bit signed soft value of buffer 716a at index i to a +1 soft value (e.g., +'3sd 1).
Accordingly, the sink buffers 716B the soft-combined PDU data of RX message a712a, RX message B712B as the accumulated value of the bits of the PDU data based on RX message B712B and the corresponding soft values of buffer 716a based on the PDU data of RX message a712 a. The sink device may estimate the PDU data of TX message B706B, which may include the same payload as TX message a 706a, based on the soft values accumulated in the buffer set. To do so, the sink device may "hard slice" (e.g., map) each soft value at index i to one bit value that is estimated to be the bit value of TX message B706B at index i.
For example, the sink device may map a three-bit signed soft value at index i that is greater than or equal to 0(3' sd0) to a 0-bit value at index i. When the three-bit signed soft value at index i is less than 0(3' sd0), then the sink device may map a 1-bit value at index i. The foregoing examples are provided as illustrations, and thus, different mappings may be used for hard slicing without departing from the scope of the present disclosure. For example, the mapping between the soft values accumulated based on the RX message and the estimated bit values of the TX message may depend on the soft values assigned to the 1-bit value and the 0-bit value of the initial RX message (e.g., RX message a712 a), respectively. In another example, the mapping between the soft values accumulated based on the RX message and the estimated bit values of the TX message may depend on how the soft values are accumulated based on the bit values of the retransmitted message (e.g., RX message B712B).
From the hard slice, the sink device may obtain an estimate of the PDU data (e.g., payload, and if applicable, MIC value) of TX message B706B. That is, because each bit value derived from the hard slice at index i may be estimated as a bit value of TX message B706B at index i, the sink device may obtain a set of estimated bit values representing the PDU data of TX message B706B. Thus, the sink device may decode 718B a set of estimated bit values representing PDU data of TX message B706B, which may include hard slices of accumulated soft values buffered 716B for RX message a712a, RX message B712B.
With the set of estimated bit values decoded to represent the PDU data of TX message B706B, the sink device may perform a decode check on the set of estimated bit values. First, the sink device may perform CRC validation 720B on the set of estimated bit values representing the PDU data of TX message B706B. For example, the sink device may generate a CRC value based on a set of estimated bit values representing the PDU data of TX message B706B. Because the CRC value may change between each transmitted message, the generated CRC value should match the CRC value associated with the most recently received RX message (here RX message B712B). Accordingly, the sink device may compare the generated CRC value to the CRC value associated with RX message B712B.
If the generated CRC value matches the CRC value associated with RX message B712B, then the set of estimated bit values representing the PDU data of TX message B706B may successfully pass the CRC validation of decode check 720B. However, CRC validation 720B of the set of estimated bit values representing the PDU data of TX message B706B may not be successful because application of the soft combining mode of operation may still produce one or more bit errors.
Additionally, the sink device may perform MIC verification 722B on the set of estimated bit values representing the PDU data of TX message B706B for decoding checking. For example, the sink device may generate a MIC value based on a set of estimated bit values representing PDU data of TX message B706B. Because the MIC value may change between each transmitted message, the generated MIC value should match the MIC value associated with the most recently received RX message (here RX message B712B). Accordingly, the sink device may compare the generated MIC value to the MIC value associated with RX message B712B.
If the generated MIC value matches the MIC value associated with RX message B712B, then the set of estimated bit values representing the PDU data of TX message B706B may successfully pass the decoding-checked MIC validation 722B. However, MIC verification 722B of the set of estimated bit values representing the PDU data of TX message B706B may be unsuccessful because application of the soft combining mode of operation may still generate one or more bit errors.
Because the set of estimated bit values representing the PDU data of TX message B706B may not pass the decode check, the sink device may send a NACK message 724B to the source device. Accordingly, the source device may transmit TX message C706C.
TX message C706C may be a retransmission of TX message a 706a and may therefore include a copy of at least the payload data of the PDU data of TX message a 706 a. During transmission of TX message C706C, one or more bit errors 708C may occur in TX message C706C. Thus, TX message C706C may be received by the sink device as RX message C712C, which may include a set of bits with one or more bit errors 708C.
Because the sink device may be applying soft combining, the sink device may buffer 716C the soft values corresponding to RX message a712a, RX message B712B, RX message C712C. In certain aspects, each soft value in the set of soft values buffered 716B in association with RX message a712a, RX message B712B may be accumulated with a value (e.g., a signed value) based on a corresponding bit of the PDU data for RX message C712C. For example, a three-bit signed soft value in buffer index i of buffer 716B, which may be based on a bit at index i of RX message a712a and a bit at index i of RX message B712B, may be accumulated with a signed value based on bit i of PDU data of RX message C712C. For example, the 1-bit value at index i of the PDU data of RX message C712C may be accumulated with the three-bit signed soft value of buffer 716b at index i to a-1 signed value (e.g., -'3sd 1). The 0-bit value at index i of the PDU data of RX message C712C may be accumulated with the three-bit signed soft value of buffer 716b at index i to a +1 soft value (e.g., +'3sd 1).
In certain aspects, the sink device may be configured such that each buffer in the set of buffers may saturate at a minimum and a maximum, which may prevent buffer underflow or overflow. For example, each buffer at index i may saturate at a maximum value of +3(+3'sd3) and at a minimum value of-4 (-3' sd 4). Accordingly, the buffer index i may not exceed the minimum or maximum value, and the additional bit i of the additional PDU data from RX message C712C may cause the soft value in the buffer index i to remain at the minimum of saturation when the value to be accumulated is a-1 soft value, or at the maximum of saturation when the value to be accumulated is a +1 soft value.
In real time, the sink buffers 716C the soft combined PDU data of RX message a712a, RX message B712B, RX message C712C, respectively, as soft values accumulated for the corresponding soft values of RX message a712a, RX message B712B based on the bits of the PDU data of RX message C712C and the PDU data of RX message a712a, RX message B712B. The sink device may estimate the PDU data for TX message C706C based on the soft values accumulated in the set of buffers.
Thus, the sink device may "hard slice" (e.g., map) each soft value at index i again to one bit value estimated to be the bit value of TX message C706C at index i. For example, the sink device may map a three-bit signed soft value at index i that is greater than or equal to 0(3' sd0) to a 0-bit value at index i. When the three-bit signed soft value at index i is less than 0(3' sd0), then the sink device may map a 1-bit value at index i.
From the hard slice, the sink device may obtain a second estimate of the PDU data (e.g., payload, and if applicable, MIC value) of TX message C706C. That is, because each bit value derived from the hard slice at index i may be estimated as a bit value of TX message C706C at index i, the sink device may obtain a second set of estimated bit values representing PDU data of TX message C706C. Thus, the sink device may decode 718C a second set of estimated bit values representing PDU data of TX message C706C, which may include hard slices of accumulated soft values buffered 716C for RX message a712a, RX message B712B, RX message C712C.
With the second set of estimated bit values decoded to represent PDU data of TX message C706C, the sink device may perform a decode check on the second set of estimated bit values. First, the sink device may perform CRC validation 720C on a second set of estimated bit values representing the PDU data of TX message C706C. For example, the sink device may generate a CRC value based on the second set of estimated bit values representing the PDU data of TX message C706C. The sink device may compare the generated CRC value to the CRC value associated with RX message C712C.
If the generated CRC value matches the CRC value associated with RX message C712C, then the set of estimated bit values representing the PDU data of TX message C706C may successfully pass the CRC validation of decode check 720C. However, CRC validation 720C of the second set of estimated bit values representing the PDU data of TX message C706C may not be successful because application of the soft combining mode of operation may still result in one or more bit errors.
Additionally, the sink device may perform MIC verification 722C on the second set of estimated bit values representing PDU data of TX message C706C for decoding checking. For example, the sink device may generate a MIC value based on a second set of estimated bit values representing PDU data of TX message C706C. The sink device may compare the generated MIC value to the MIC value associated with RX message C712C.
If the generated MIC value matches the MIC value associated with RX message C712C, then the second set of estimated bit values representing the PDU data of TX message C706C may successfully pass the decoding-checked MIC verification 722C. However, the MIC verification 722C of the second set of estimated bit values, representing the PDU data of TX message C706C, may be unsuccessful because the application of the soft combining mode of operation may still generate one or more bit errors.
Because the second set of estimated bit values representing the PDU data of TX message C706C may again fail the decoding check, the sink device may send a NACK message 724C to the source device. Accordingly, the source device may transmit TX message D706D. TX message D706D may be a retransmission of TX message a 706a and, thus, may include a copy of at least the payload data of the PDU data of TX message a 706 a.
During transmission of TX message D706D, one or more bit errors 708D may occur in TX message D706D. Thus, TX message D706D may be received by the sink device as RX message D712D, which may include a set of bits with one or more bit errors 708D.
Similar to RX message a712a, RX message B712B, RX message C712C, previously described, the sink device may buffer 716D soft values corresponding to RX message a712a, RX message B712B, RX message C712C, RX message D712D. In certain aspects, each soft value in the set of soft values buffered 716C in association with RX message a712a, RX message B712B, RX message C712C may be accumulated with a value (e.g., a signed value) of a corresponding bit of PDU data based on RX message D712D. For example, a three-bit signed soft value in buffer index i of buffer 716C, which may be buffered based on a corresponding bit at a corresponding index i of RX message a712a, RX message B712B, RX message C712C, may be accumulated with a signed value based on a bit value at index i of the PDU data of RX message D712D.
For example, the 1-bit value at index i of the PDU data of RX message D712D may be accumulated with the three-bit signed soft value of buffer 716c at index i to a-1 signed value (e.g., -'3sd 1). The 0-bit value at index i of the PDU data of RX message C712C may be accumulated with the three-bit signed soft value of buffer 716C at index i to a +1 soft value (e.g., +'3sd 1).
In certain aspects, the sink device may be configured such that the buffer at index i may saturate at a minimum and a maximum (e.g., saturate at a maximum of +3(+3'sd3) and saturate at a minimum of-4 (-3' sd 4)). Accordingly, the additional bits i of the additional PDU data from RX message D712D may result in the soft value in buffer index i remaining at a minimum value of saturation or a maximum value of saturation, depending on the soft value to be accumulated based on the PDU data of RX message D712D.
Accordingly, the sink buffers 716D the soft combined PDU data of RX message a712a, RX message B712B, RX message C712C, RX message D712D, respectively, as soft values accumulated for the corresponding soft values of 716C based on the bits of the PDU data of RX message D712D and the PDU data of RX message a712a, RX message B712B, RX message C712C. The sink device can estimate the PDU data for TX message D706D based on the soft values accumulated in the set of buffers.
In real-time, the sink device may hard-slice each soft value at index i to one bit value estimated to be the bit value of TX message D706D at index i. For example, the sink device may map a three-bit signed soft value at index i that is greater than or equal to 0(3' sd0) to a 0-bit value at index i. When the three-bit signed soft value at index i is less than 0(3' sd0), then the sink device may map a 1-bit value at index i.
From this third hard slice, the sink device may obtain a third estimate of the PDU data (e.g., payload, and if applicable, MIC value) of TX message D706D. Thus, because each bit value derived from the hard slice at index i may be estimated as a bit value of TX message D706D at index i, the sink device may obtain a third set of estimated bit values representing PDU data of TX message D706D. The sink device may decode 718C a third set of estimated bit values representing PDU data of TX message D706D, which may include hard slices of accumulated soft values buffered 716D based on RX message a712a, RX message B712B, RX message C712C, RX message D712D.
With the third set of estimated bit values decoded to represent PDU data of TX message D706D, the sink device may perform a decoding check by first performing CRC validation 720D on the third set of estimated bit values representing PDU data of TX message D706D. For example, the sink device may generate a CRC value based on a third set of estimated bit values representing the PDU data of TX message D706D. The sink device may compare the generated CRC value to the CRC value associated with RX message D712D.
If the generated CRC value matches the CRC value associated with RX message D712D, then a third set of estimated bit values representing the PDU data of TX message D706D may successfully pass CRC validation of the decode check 720D. Here, CRC validation 720D of the third set of estimated bit values representing the PDU data of TX message D706D may be successful. For example, the bit errors 708a, 708b, 708c, 708D may not occur at the same bit positions, and thus, the soft combining mode of operation may produce a third set of estimated bit values that match the TX message D706D after one or more retransmissions (e.g., three retransmissions in the illustrated aspect, although more or fewer retransmissions may produce a set of estimated bit values that successfully pass the decoding check, depending on the number and position of bit errors).
Further to decode check, the sink device may perform MIC verification 722D on the third set of estimated bit values of the PDU data representing TX message D706D. For example, the sink device may generate a MIC value based on a third set of estimated bit values of the PDU data representing TX message D706D. The sink device may compare the generated MIC value to the MIC value associated with RX message D712D.
If the generated MIC value matches the MIC value associated with RX message D712D, then a third set of estimated bit values representing PDU data of TX message D706D may successfully pass the MIC verification 722D. Here, the MIC verification 722D of the third set of estimated bit values, representing the PDU data of TX message D706D, may be successful. For example, from hard slicing, the soft combining mode of operation may produce a third set of estimated bit values that match TX message D706D.
When the CRC validation 720d and the MIC validation 722d are successful, the sink device may send an ACK message 724d to the source device. The source device may then stop the retransmission of TX message D706D and may continue to transmit further packets.
In response to the ACK message 724a, the source device may send a next message TX message 2a 746 a. In the illustrated aspect, TX message 2a 746a may not experience sufficient interference or other poor channel conditions to cause bit errors, and thus, the sink device may receive RX message 2a 752a that does not have bit error 748a sufficient to degrade the message.
Since the sink device may not know that no bit error 748a has substantially degraded RX message 2a 752a, the sink device may buffer 756a set of values based on RX message 2a 752 a. For example, the sink device may buffer 756a set of soft values according to a soft combining mode of operation based on the PDU data of RX message 2a 752 a. Further, the sink device may decode 758a RX message 2a 752a to perform a decode check.
Because a bit error 748a may not occur in RX message 2a 752a sufficient to significantly degrade RX message 2a 752a, RX message 2a 752a may be substantially similar to TX message 2a 746a such that the decoding check may succeed. In particular, the sink device may perform CRC validation 760a on RX message 2a 752a, e.g., by generating a CRC value that matches the CRC value associated with RX message 2a 752a based on the PDU data of RX message 2a 752 a. If applicable (e.g., if RX message 2a 752a is encrypted), the sink device may perform MIC verification 762a on RX message 2a 752a, e.g., by generating a MIC value based on the PDU data (e.g., based on the payload) of RX message 2a 752a that matches the MIC value associated with RX message 2a 752a (e.g., indicated in the PDU data following the payload of RX message 2a 752 a).
The error correction techniques described herein may provide an improved approach to error correction in communication systems, where different error correction techniques (e.g., QBm-H, and/or real-time soft combining) may be differently adapted for different types of logical links. As a result of these techniques, data communication over noisy communication media may be improved because these techniques may substantially recover from bit errors. For data communications involving voice or other streaming audio data, these techniques facilitate improved audio quality over systems that do not employ the techniques described in this disclosure.
Fig. 8A and 8B are flow diagrams of a method 800 of wireless communication. The method 800 may be performed by a first device (e.g., the wireless device 102, the peripheral devices 104, 106, 108, 110, 112, 114, the wireless device 200, the sink device 502, the apparatus 1302/1302') in communication with a second device (e.g., the central wireless device 102, the peripheral devices 104, 106, 108, 112, 114, the wireless device 200, the source device 550, the second device 1350). In various aspects, one or more of the illustrated operations may be omitted, transposed, and/or performed contemporaneously.
Referring to fig. 8A, at operation 802, a first device may establish a logical link associated with short-range communication with a second device. For example, the first device and the second device may discover each other, and the first device and the second device may determine a type of communication that will occur between the first device and the second device. The first device and the second device may establish a logical link. The logical link may be one of an ACL link, an A2DP link, an eSCO link, or an ISO link. In certain aspects, one of the first device or the second device may issue a first packet to the other of the first device or the second device to establish the logical link. The first packet may include an access address based on the type of logical link or a header portion including LT _ ADDR.
For example, referring to fig. 5, sink device 502 may receive a first packet 560 (e.g., at RF interface 510), the first packet 560 associated with establishment of logical link 552 with source device 550. First packet 560 may include at least one of an access address or LT _ ADDR associated with the type of logical link 552 (i.e., associated with one of an ACL link, an A2DP link, an eSCO link, or an ISO link).
At operation 804, the first device may determine a type of logical link. For example, a first device may receive a first packet from a second device, and the first device may detect an address portion of the packet. From the address portion, the first device may identify one of an access address or LT _ ADDR. For example, the first device may detect an access address after the preamble of the BLE packet and before the PDU, or the first device may detect the LT _ ADDR in the header portion of the BT packet. Based on the identified access address or LT _ ADDR, the first device may determine the type of logical link.
For example, referring to fig. 5, sink device 502 may receive a first packet 560 (e.g., at RF interface 510), the first packet 560 being associated with a logical link 552 with a source device 550. First packet 560 may include at least one of an access address or LT _ ADDR associated with the type of logical link 552 (i.e., associated with one of an ACL link, an A2DP link, an eSCO link, or an ISO link). Based on the identified access address of first packet 560 or the LT _ ADDR included in the header portion, sink device 502 (e.g., error correction component 520) may determine the type of logical link 552.
At operation 806, the first device may select a first mode of operation from a plurality of modes of operation for error correction based on the logical link. For example, the first device may identify an association between each mode of operation and each type of logical link, and the first device may select a first mode of operation from a plurality of modes of operation identified as being associated with the determined type of logical link. In one aspect, the first device may select the soft combining mode of operation based on a logical link including an ACL link or an A2DP link. In another aspect, the first device may select QBm the mode of operation based on a logical link that includes an eSCO link. In another aspect, the first device may select QBm-H mode of operation based on a logical link that includes an ISO link.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can select operating mode 526 from a plurality of operating modes based on logical link 552.
At operation 808, a first device may receive a first packet carried on a logical link. For example, a first device may receive a first packet from a second device, and the first packet may include data (e.g., audio data, video data, etc.) in a payload. For example, referring to fig. 5, sink device 502 may receive initial data packet 562 from source device 550 over logical link 552 (e.g., at RF interface 510).
At operation 810, the first device may perform a decoding check to determine whether the first PDU data included in the first packet passes the decoding check (e.g., the decoding check is successful) or fails the decoding check (e.g., the decoding check is unsuccessful). For example, the first device may perform CRC validation on the first PDU data included in the first packet. If the first packet is encrypted, the first device may perform MIC verification on the first PDU data included in the first packet. The first device may then determine that the first packet passed the decoding check when the CRC validation succeeded and (if applicable) the MIC validation succeeded. The first device may then determine that the first packet failed the decode check when the CRC validation or (if applicable) the MIC validation was unsuccessful. One aspect of the decoding check is illustrated with respect to fig. 9.
For example, referring to fig. 5, sink device 502 (e.g., CRC check component 514, and, if applicable, decryption component 516) may perform a decode check on the first PDU data included in initial data packet 562. The initial data packet 562 may successfully pass the decode check if the CRC check component 514 verifies the CRC value associated with the first PDU data included in the initial data packet 562 and (if applicable) the decryption component 516 verifies the MIC value associated with the first PDU data included in the initial data packet 562. If the CRC check component 514 does not verify the CRC value associated with the first PDU data included in the initial data packet 562, or if applicable, the decryption component 516 does not verify the MIC value associated with the first PDU data included in the initial data packet 562, the initial data packet 562 may fail the decode check and the decode check on the initial data packet 562 may not succeed.
If the decode check is successful, the first device may issue at least a portion of the first PDU data included in the first packet to a higher layer, as shown at operation 812. For example, the first device may extract the payload from the first packet, and the payload may be provided to the CODEC. The CODEC may cause the payload to be output by the first device, e.g., as audio, as video, etc.
For example, referring to fig. 5, if CRC check component 514 verifies a CRC value associated with the first PDU data included in initial data packet 562, and (if applicable) decryption component 516 verifies a MIC value associated with the first PDU data included in initial data packet 562, the payload of initial data packet 562 may be provided to higher layers (e.g., CODECs) of sink device 502. Sink device 502 may then output the payload, e.g., as audio, as video, etc.
Referring to fig. 8B, if the decoding check is not successful, the first device may receive the retransmission packet set on the logical link. In particular, the first device may send a NACK message to the second device based on the decoding check of the first packet being unsuccessful. Based on the NACK message, the first device may receive a first retransmission packet of the set of retransmission packets from the second device over the logical link.
For example, referring to fig. 5, sink device 502 may receive a first retransmission data packet of set of retransmission data packets 564 (e.g., at RF interface 510). In certain aspects, sink device 502 may send feedback message 582 indicating a NACK when initial data packet 562 fails a CRC validation by CRC check component 514 or when initial data packet 562 fails a MIC validation by decryption component 516.
At operation 816, the first device may apply a first mode of operation for error correction based on the first PDU data of the first packet and the respective PDU data included in each retransmission packet of the set of retransmission packets. For example, the first device may buffer the first set of bits based on first PDU data of the first packet. In addition, the first device may buffer at least one other set of bits based on the respective PDU data included in each of the set of retransmission packets (e.g., based on the first retransmission PDU data included in the first retransmission packet when only the first retransmission packet of the set of retransmission packets has been received).
In certain aspects, when the first PDU data included in the first packet fails the decoding check, the first device may determine a first operating mode from a plurality of operating modes based on the logical link-e.g., the first operating mode may be selected when the type of logical link is determined (e.g., as described with respect to operations 804 and 806). In one aspect, the first device may determine that the first mode of operation is a soft combining mode of operation when the type of logical link comprises one of an ACL link or an A2DP link. In another aspect, when the type of logical link comprises an eSCO link, the first device may determine that the first operating mode is an QBm operating mode. In another aspect, when the type of logical link comprises an ISO link, the first device may determine that the first mode of operation is QBm-H mode of operation. The first device may apply one of a soft combining mode of operation, an QBm mode of operation, or a QBm-H mode of operation based on at least one set of bits buffered based on first PDU data included in the first packet and corresponding PDU data included in each of a set of retransmission packets.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can determine an operating mode 526 for error correction based on logical link 552. Sink device 502 (e.g., error correction component 520) can apply an operational mode 526 for error correction based on the first PDU data included in initial data packet 562 and based on the corresponding PDU data included in each of the set of retransmission data packets 564.
According to certain aspects, when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of a set of retransmission packets, and when the first mode of operation for error correction comprises a soft combining mode of operation, then the first mode of operation for error correction (including the soft combining mode of operation) may be applied based on first PDU data of the first packet comprising the first payload data and the first MIC value and further based on corresponding PDU data of each of the set of retransmission packets comprising the corresponding payload data and the corresponding MIC value. In one such aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets may be decrypted.
According to certain other aspects, when the first packet is associated with a first random number for decryption that is different from a corresponding random number for decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction includes a soft combining mode of operation, then the first mode of operation for error correction (including the soft combining mode of operation) may be applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets. In one such aspect, when the first PDU data of the first packet may include a first MIC value and when the respective PDU data packet of each of the set of retransmit packets includes a respective MIC value, the first mode of operation for error correction may be applied without utilizing the first MIC value and without utilizing each of the respective MIC values (e.g., bits corresponding to the MIC values may be ignored from application of the first mode of operation for error correction). In another such aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets may be decrypted.
In various aspects, the first device may perform a decoding check on each retransmission packet in the set of retransmission packets (e.g., similar to the decoding check described with respect to operation 810). When a retransmission packet in the set of retransmission packets successfully passes the decoding check, then the first device may provide the corresponding PDU data (e.g., payload) of the retransmission packet to higher layers of the first device (e.g., as described with respect to operation 812), and the first device may send an ACK message to the second device. Further, when the retransmission packet of the set of retransmission packets successfully passes the decoding check, then the first device may refrain from applying or refrain from continuing to apply the selected mode of operation for error correction, e.g., because error correction may be unnecessary when the retransmission packet successfully passes the decoding check.
At operation 818, the first device may issue to a higher layer a set of estimated bit values obtained based on applying the first mode of operation for error correction. For example, the first device may calculate a set of estimated bit values based on applying a first mode of operation for error correction. In various aspects, the set of estimated bit values may be estimated to include PDU data of the most recently received retransmission packet (whose payload may be the same as the payload of the first packet). The first device may then provide the set of estimated bit values to at least one higher layer (e.g., CODEC) of the first device. The first device may then cause data to be output based on the set of estimated bit values-e.g., the first device may output audio and/or video based on the set of estimated bit values.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) may calculate a set of estimated bit values based on application of operating mode 526. The set of estimated bit values may be estimated to include the corresponding PDU data of the most recently received retransmitted data packet in the set of retransmitted data packets 564 (e.g., the corresponding PDU data may include a payload that matches the payload of the initial data packet 562).
In various aspects, the first device may perform a decode check on the set of estimated bit values (e.g., similar to the decode check described with respect to operation 810). For example, a set of estimated bit values may be provided as PDU data (e.g., payload, and, if applicable, MIC values) for CRC validation and, if applicable, MIC validation. When the set of estimated bit values successfully passes the decoding check (e.g., as described with respect to operation 812), then the first device may provide the set of estimated bit values to higher layers of the first device as PDU data (e.g., payload) that is expected to be included in the first packet and each retransmission packet of the set of retransmission packets. Further, the first device may send an ACK message associated with the most recently received one of the set of retransmission packets to the second device. When the set of estimated bit values fails the decoding check (e.g., as described with respect to operation 812), then the first device may send a NACK message associated with the most recently received one of the set of retransmission packets to the second device. In certain aspects, the first device may then receive another retransmission packet of the set of retransmission packets based on the NACK message, and the first device may continue to apply the first mode of operation for error correction with the other retransmission packet added to the set of retransmission packets.
At operation 820, the first device may determine a set of bit errors associated with the set of estimated bit values based on applying a first mode of operation for error correction. For example, the first device may identify one or more bits corresponding across the first PDU data of the first packet and the respective PDU data of each retransmission packet of the set of retransmission packets, the one or more bits being different across at least two of: the first PDU data of the first packet and each respective PDU data of the respective PDU data of each retransmission packet of the set of retransmission packets. In other words, the first device may determine the bit value at index i that is different between the PDU data of the first packet and the corresponding PDU data of at least one of the set of retransmission packets or different between the corresponding PDU data of at least two of the set of retransmission packets. The first device may then count the number of the one or more bits and/or may detect a position of the one or more bits (e.g., a respective index for each of the one or more bits).
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) may determine a set of bit errors associated with a set of estimated bit values based on application of operating mode 526 for error correction. The set of bit errors may comprise a number and/or location(s) of one or more bits that differ across at least two of: the first PDU data of the initial data packet 562 and each of the respective PDU data of each of the retransmitted data packets in the set of retransmitted data packets 564.
At operation 822, the first device may issue at least one bit error quality metric to a higher layer, the at least one bit error quality metric indicating at least one of a set of positions of a set of bit errors or a number of the set of bit errors. For example, the first device may generate a message indicating at least one bit error quality metric, and the first device may provide the generated message to a higher layer (e.g., CODEC) of the first device. The first device may then cause data to be output based on the at least one bit error quality metric. For example, the first device may attempt to correct one or more bit errors based on at least one bit error quality metric. For example, if the correction is successful, the first device may output audio and/or video. If the correction is unsuccessful or if the first device does not correct the bit errors, the first device may output data (e.g., audio and/or video) that conceals or discards the data that would otherwise be output (e.g., data estimated to be contained in the payload of the first packet).
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can issue at least one bit error quality metric to a higher layer (e.g., CODEC) of the sink device. The at least one bit error quality metric can indicate a number and/or location(s) of one or more bit errors identified by error correction component 520.
Referring to fig. 9, a flow diagram illustrates a method 900 of decoding a check as described with respect to operation 810 of the method 800. Beginning with operation 902, the first device may generate an estimated CRC value based on a set of bit values. For example, the first device may generate an estimated CRC value based on the first PDU data (e.g., payload, and, if applicable, MIC value) of the first packet. The first device may identify a set of bit values of first PDU data corresponding to the first packet, and the first device may calculate an estimated CRC value based on the identified set of bits. In another example, the first device may identify a set of estimated bit values obtained based on applying the first mode of operation, and the first device may calculate an estimated CRC value based on the set of estimated bit values.
For example, referring to fig. 5, sink device 502 (e.g., CRC check component 514) may calculate an estimated CRC value based on the set of bit values. In an aspect, the set of bit values may correspond to PDU data of the initial data packet 562 or PDU data of at least one of the set of retransmitted data packets 564. In another aspect, the set of bit values may correspond to a set of estimated bit values obtained based on an application of the operating mode 526, generated by the sink device 502 (e.g., the error correction component 520).
At operation 904, the first device may compare the generated CRC value to a CRC value indicated by the packet. For example, the first device may compare the generated CRC value to a CRC value indicated by the most recently received packet, and the first device may determine whether the generated CRC value matches the CRC value indicated by the most recently received data packet based on the comparison.
For example, referring to fig. 5, sink device 502 (e.g., CRC check component 514) may compare the estimated CRC value to a CRC value indicated by the most recently received one of initial data packet 562 or retransmitted data packets in retransmitted data packet set 564.
At operation 906, if the first device is encrypted, the first device may generate an estimated MIC value based on the set of bit values. For example, the first device may generate an estimated MIC value based on the first payload of the first packet. The first device may identify a set of bit values corresponding to a first payload of the first packet, and the first device may calculate an estimated MIC value based on the identified set of bits. In another example, the first device may identify a set of estimated bit values obtained based on applying the first mode of operation, and the first device may calculate an estimated MIC value based on the set of estimated bit values.
For example, referring to fig. 5, sink device 502 (e.g., decryption component 516) may calculate an estimated MIC value based on a set of bit values. In an aspect, the set of bit values may correspond to the payload of the initial data packet 562 or the payload of at least one of the set of retransmitted data packets 564. In another aspect, the set of bit values may correspond to a set of estimated bit values obtained based on an application of the operating mode 526, generated by the sink device 502 (e.g., the error correction component 520).
At operation 908, the first device may compare the generated MIC value to the MIC value indicated by the packet. For example, the first device may compare the generated MIC value to a MIC value indicated by a most recently received packet, and the first device may determine whether the generated MIC value matches the MIC value indicated by the most recently received data packet based on the comparison.
For example, referring to fig. 5, sink device 502 (e.g., decryption component 516) may compare the estimated MIC value to a MIC value indicated by the most recently received one of the initial data packet 562 or the retransmitted data packets in retransmitted data packet set 564.
Referring to fig. 10, a flow chart illustrates a method 1000 of application of a first mode of operation for error correction described with respect to operation 816 of method 800. Method 1000 may be implemented when the logical link comprises one of an ACL link or an A2DP link. The first mode of operation may be selected as a soft combining mode of operation.
At operation 1002, the first device may store each soft value in a set of soft values in each buffer in a set of buffers. In one aspect, each soft value in the set of soft values may be a three-bit signed soft value based on a corresponding bit of the first PDU data of the first packet. For example, for a packet of size n, each bit has an index i (where 0 ≦ i ≦ n-1), when bit i of the first PDU data equals 0, the first device may identify a first soft value, and the first device may store the first soft value in buffer index i. Further, when bit i of the first PDU data is equal to 1, the first device may identify the second soft value, and the first device may store the first soft value in the buffer index i.
For example, referring to fig. 5, sink device 502 (error correction component 520) may store each soft value in the set of soft values in each buffer in the set of buffers. In one aspect, each soft value in the set of soft values may be a three-bit signed soft value based on a corresponding bit of the first PDU data of initial data packet 562.
At operation 1004, the first device may accumulate each soft value in the set of soft values with a signed value in each buffer in the set of buffers for each retransmission packet in the set of retransmission packets. In certain aspects, each of the signed values may be based on a corresponding bit of the respective PDU data of each retransmission packet of the set of retransmission packets. For example, the first device may identify a first signed value when bit i of the corresponding PDU data is equal to 0, and the first device may add the first signed value to a soft value in buffer index i. Further, the first device may identify the second signed value when bit i of the corresponding PDU data is equal to 1, and the first device may add the first signed value to the soft value in buffer index i.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can accumulate each soft value in the set of soft values with a signed value in each buffer in the set of buffers for each retransmitted data packet in the set of retransmitted data packets 564. In certain aspects, each of the signed values may be based on a corresponding bit of the respective PDU data for each of the set of retransmission data packets 564.
In certain aspects, each buffer in the set of buffers may be limited by a minimum threshold and a maximum threshold. Accordingly, each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers may not exceed a minimum threshold and may not exceed a maximum threshold.
At operation 1006, the first device may map each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to one bit value of the set of estimated bit values. That is, the first device may hard slice each of the accumulated soft values to obtain a set of estimated bit values. For example, for a packet of size n, a soft value at a buffer index i (where 0 ≦ i ≦ n-1) may be mapped to a 0-bit value when the soft value is within a first range and may be mapped to a 1-bit value when the soft value is within a second range different from the first range. Each of the mapped bit values may be stored in a set of estimated bit values that may be estimated as PDU data of a most recently received data packet.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) may map each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers to one bit value in the set of estimated bit values. Sink device 502 (e.g., error correction component 520) may provide a set of estimated bit values for CRC validation (e.g., at CRC check component 514) and, if applicable, MIC validation (e.g., at decryption component 516).
At operation 1008, the first device may determine whether the set of estimated bit values passes a decode check (e.g., as described with respect to operation 810 of method 800). For example, the first device may perform a CRC validation and (if applicable) a MIC validation based on the set of estimated bit values. If the CRC validation or MIC validation (if applicable) fails, the first device may send a NACK message to the second device. If the CRC and MIC verifications (if applicable) are successful, the first device may send an ACK message to the second device and may provide a set of estimated bit values to higher layers of the first device.
Referring to fig. 11, a flow chart illustrates a method 1100 of application of a first mode of operation for error correction described with respect to operation 816 of method 800. The method 1100 can be implemented when the logical link comprises an eSCO link. The first mode of operation may be selected as the QBm mode of operation.
At operation 1102, the first device may perform a bit-wise majority function based on a first set of bits of first PDU data of the first packet, a second set of bits of one respective PDU data of one of the set of retransmission packets, and a third set of bits of another respective PDU data of another of the set of retransmission packets. For example, for a packet of size n, each bit having an index i (where 0 ≦ i ≦ n-1), the first device may perform a plurality of XOR operations based on the first set of bits, the second set of bits, and the third set of bits. The first device may then determine the bit value at index i based on the plurality of XOR operations. Accordingly, the first device may determine which bit value (between 0 and 1) occurs on at least two of the first packet, one retransmission packet, and the other retransmission packet for index i.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can perform a bit-by-bit majority function based on a first set of bits of first PDU data of initial data packet 562, a second set of bits of one corresponding PDU data of one of sets of retransmission data packets 564, and a third set of bits of another corresponding PDU data of another of sets of retransmission data packets 564.
At operation 1104, the first device may determine a set of estimated bit values based on performing a bit-by-bit majority function. For example, the first device may identify each of the bit values for each index i, and the first device may store each of the identified bit values as PDU data corresponding to the most recently received packet. In certain aspects, the first device may also determine a set of bit error quality metrics based on the set of estimated bit values, and the first device may attempt to correct one or more bits based on the set of bit error quality metrics. For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) may determine a set of estimated bit values based on performing a bit-by-bit majority function.
Referring to fig. 12, a flow chart illustrates a method 1200 of application of a first mode of operation for error correction described with respect to operation 816 of method 800. Method 1200 may be implemented when the logical link comprises one of the ISO links. The first mode of operation may be selected as the QBm-H mode of operation.
At operation 1202, a first device may determine a number of retransmission packets received in a set of retransmission packets. For example, the first device may count the number of retransmission packets in the set of retransmission packets, and the first device may compare the number to a threshold number (such as three). For example, referring to fig. 5, a sink device (e.g., error correction component 520) can determine a number of retransmitted data packets received in the set of retransmitted data packets 564.
If the number of retransmitted packets is less than three (e.g., only two), the first device may perform QBm mode of operation, as shown at operation 1204. QBm mode of operation may be described with respect to method 1100 of fig. 11. The first device may send an ACK message if the first device is able to obtain the set of estimated bit values that pass the decoding check, and the first device may send the set of estimated bit values to a higher layer of the first device.
For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can determine a number of sets of retransmitted data packets 564. If the number of retransmitted data packets is less than three (e.g., only two), sink device 502 (e.g., error correction component 520) may perform QBm mode of operation.
At operation 1206, when the additional retransmission packet received after the determined set of estimated bit values is a retransmission of the first packet, the first device may discard the additional retransmission packet. For example, if the first device is able to obtain a set of estimated bit values that pass the decoding check and/or provide a set of bit error quality metrics to higher layers (in other words, if the first device has continued to proceed from attempting to process the payload of the first packet), the first device may send an ACK message and the first device may discard additional retransmission packets received after the set of estimated bit values was provided to higher layers by the decoding check and/or the set of bit error quality metrics. For example, referring to fig. 5, the sink device (e.g., error correction component 520) may discard additional retransmitted data packets received after the determined set of estimated bit values.
If the number of retransmission packets is greater than or equal to three, the first device may perform a soft combining mode of operation, as shown at operation 1208. Operation of the soft combining mode of operation may be described with respect to method 1000 of fig. 10. If the first device cannot obtain the set of estimated bit values that pass the decoding check, the first device may continue to receive the number of retransmitted packets greater than or equal to three, and thus the first device may switch from the QBm mode of operation to the soft combining mode of operation in order to attempt to obtain the set of estimated bit values that pass the decoding check. For example, referring to fig. 5, sink device 502 (e.g., error correction component 520) can determine a number of sets of retransmitted data packets 564. If the number of retransmitted data packets is greater than or equal to three, sink device 502 (e.g., error correction component 520) may perform a soft combining mode of operation.
Fig. 13 is a conceptual data flow diagram 1300 illustrating the data flow between different components/assemblies in an exemplary apparatus 1302. The apparatus may be a first device (e.g., wireless device 102, peripheral 104, 106, 108, 110, 112, 114, wireless device 200, sink device 502) in communication with a second device 1350 (e.g., wireless device 102, peripheral 104, 106, 108, 110, 112, 114, wireless device 200, source device 550).
The apparatus 1302 may include a receiving component 1304, and the receiving component 1304 may be configured to receive a signal from the second device 1350 over the logical link. Further, the apparatus 1302 may include a transmitting component 1312 configured to transmit a signal to the second device 1350 over the logical link.
The apparatus 1302 may include a logical link component 1314. The logical link component 1314 can establish a logical link associated with short-range communication with the second device 1350. The logical link component 1314 can determine the type of logical link. For example, logical link component 1314 can determine the type of logical link based on an access address or LT _ ADDR indicated in at least one header of at least one packet received over the logical link. The logical link may comprise one of an ACL link, an A2DP link, an eSCO link, or an A2DP link.
The apparatus 1302 may include an operation mode component 1308. The operating mode component 1308 can receive the type of logical link from the logical link component 1314. The operation mode component 1308 can select a first operation mode for error correction from a plurality of operation modes for error correction based on the logical link. For example, the operating mode component 1308 may select a soft combining operating mode when the logical link comprises an ACL or A2DP link. In another example, the operating mode component 1308 can select QBm an operating mode when the logical link comprises an eSCO link. In another example, the operational mode component 1308 may select QBm-H mode when the logical link comprises an ISO link.
Apparatus 1302 may include a decode check component 1306. Receiving component 1304 may receive the first packet over the logical link, and the first packet may be provided to decode check component 1306. The decode-check component 1306 may be configured to perform a CRC validation and, if applicable, a MIC validation on the first packet.
In certain aspects, the decode check component 1306 may be configured to perform CRC validation on a set of bits (e.g., obtained from the operating mode component 1308 as an estimated set of bits obtained from the PDU data of the first packet or the retransmission packet). For CRC validation, decode check component 1306 may generate a CRC value based on the set of bits. The decode check component 1306 can compare the generated CRC value to a CRC value indicated by a most recently received packet (e.g., first packet, retransmitted packet). When the generated CRC value matches the CRC value indicated by the most recently received packet, decode check component 1306 may determine that the set of bits at least partially passed the decode check. When the generated CRC value does not match the CRC value indicated by the most recently received packet (corresponding to or based on the set of bits), decode check component 1306 can determine that the set of bits failed the decode check.
When the first packet is encrypted, the decode check component 1306 may be configured to perform MIC verification on a set of bits (e.g., obtained from the PDU data of the first packet or the retransmit packet as an estimated set of bits from the operational mode component 1308). For MIC verification, decode-check component 1306 may generate a MIC value based on a set of bits. The decode-check component 1306 may compare the generated MIC value to a MIC value indicated by a most recently received packet (e.g., a first packet, a retransmitted packet). When the generated MIC value matches the MIC value indicated by the most recently received packet, decode check component 1306 may determine that the set of bits at least partially passes the decode check. When the generated MIC value does not match the MIC value indicated by the most recently received packet (corresponding to or based on the set of bits), decode-checking component 1306 may determine that the set of bits failed the decode check.
When the first packet passes the decode check, the decode check component 1306 may send an ACK message to the second device 1350. Further, decode check component 1306 may provide the payload of the first packet to decode component 1310 of apparatus 1302. The decoding component 1310 may decode the payload and may cause the apparatus to output audio and/or video based on the decoded payload.
When the first packet fails the decoding check, decoding checking component 1306 may send a NACK message to second device 1350. The receiving component 1304 may receive at least one retransmission packet of the set of retransmission packets (e.g., based on a NACK message) from the second device 1350. Whenever the set of estimated bit values that pass the decoding check is not available to the operating mode component 1308, the decoding check component 1306 may send another NACK message and the receiving component may receive another retransmission packet of the set of retransmission packets.
The decode-check component 1306 may perform a decode check on each retransmission packet in the set of retransmission packets. Further, the operational mode component 1308 can apply a first operational mode for error correction based upon the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet in the set of retransmission packets. The operation mode component 1308 can determine a first operation mode for error correction.
When the logical link is one of an ACL link or an A2DP link and the first mode of operation includes a soft combining mode of operation, the operation mode component 1308 may store each soft value of the set of soft values in each buffer of the set of buffers, and each soft value of the set of soft values may be a three-bit signed soft value based on a corresponding bit of the first PDU data of the first packet. Further, the operation mode component 1308 can accumulate each soft value in the set of soft values with a signed value in each buffer in the set of buffers for each retransmission packet in the set of retransmission packets, and each of the signed values can be based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets. The operation mode component 1308 may map each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers to a bit value in the set of estimated bit values. In one aspect, each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
In one aspect, when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmitted packets, and when the first mode of operation for error correction comprises a soft combining mode, the operational mode component 1308 may apply the first mode of operation for error correction based on first PDU data of the first packet comprising the first payload data and the first MIC value and further based on corresponding PDU data of each of a set of retransmitted packets comprising the corresponding payload data and the corresponding MIC value. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted. In another aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets remain encrypted.
In one aspect, when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the operation mode component 1308 may apply the first mode of operation for error correction based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets. In one aspect, a first mode of operation for error correction is applied without utilizing a first MIC value and without utilizing each of the respective MIC values when the first PDU data packet of the first packet includes the first MIC value and when the respective PDU data packet of each of the set of retransmit packets includes the respective MIC value. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted.
The operating mode component 1308 may provide the set of estimated bit values to the decode check component 1306. The decode-check component 1306 may determine whether the set of estimated bit values passes the decode check. When the set of estimated bit values passes the decoding check, decoding check component 1306 may provide at least a portion of the set of estimated bit values to decoding component 1310, which decoding component 1310 may decode the set of estimated bit values as if it were the payload of the first packet. Further, the decode-check component 1306 can transmit an ACK message to the second device 1350.
When the set of estimated bit values fails the decoding check, the decoding checking component 1306 may send a NACK message to the second device 1350, and the receiving component 1304 may receive another retransmission packet of the set of retransmission packets. The operation mode component 1308 can continue to apply the first operation mode for error correction based on the first packet and the set of retransmitted packets.
When the logical link comprises an eSCO link and the first mode of operation comprises an QBm mode, the operational mode component 1308 may perform a bit-wise majority function based on a first set of bits of a first PDU data of a first packet, a second set of bits of one respective PDU data of one of the set of retransmission packets, and a third set of bits of another respective PDU data of another one of the set of retransmission packets. The operation mode component 1308 may determine a set of estimated bit values based on the execution of a bit-by-bit majority function. The operation mode component 1308 may additionally determine a set of bit error quality metrics based on the set of estimated bit values.
When the logical link comprises an ISO link and the first mode of operation comprises an QBm-H mode, the operation mode component 1308 may perform the QBm mode of operation when a set of retransmission packets is less than three. The operation mode component 1308 may discard the additional retransmission packet that is a retransmission of the first packet after the operation mode is applied QBm and the set of estimated bit values is obtained (e.g., by a decode check). When the number of retransmission packet sets is greater than or equal to three, the operation mode component 1308 may perform a soft combining operation mode for error correction based on the first packet and the retransmission packet sets.
Upon application of the first mode of operation, the operation mode component 1308 may determine a set of bit errors associated with the set of estimated bit values based on application of the first mode of operation for error correction. The operation mode component 1308 may attempt to correct the determined set of bit errors and/or may provide at least one bit error quality metric indicative of at least one of a set of positions of the set of bit errors or a number of the set of bit errors to the decoding component 1310 (e.g., to be corrected, concealed, or discarded).
The apparatus may include additional components to perform each of the aforementioned blocks of the algorithms in the flowcharts of fig. 6, 8A-8B, and 9-12. As such, each block in the aforementioned flowcharts of FIGS. 6, 8A-8B, and 9-12 may be performed by a component, and an apparatus may include one or more of those components. These components may be one or more hardware components specifically configured to perform the recited processes/algorithms, implemented by a processor configured to perform the recited processes/algorithms, stored within a computer-readable medium for implementation by a processor, or some combination thereof.
Fig. 14 is a diagram 1400 illustrating an example of a hardware implementation for an apparatus 1302' employing a processing system 1414. The processing system 1414 may be implemented with a bus architecture, represented generally by the bus 1424. The bus 1424 may include any number of interconnecting buses and bridges depending on the specific application of the processing system 1414 and the overall design constraints. The bus 1424 links together various circuits including one or more processors and/or hardware components, represented by the processor 1404, the components 1304, 1306, 1308, 1310, 1312, 1314, and the computer-readable medium/memory 1406. The bus 1424 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
The processing system 1414 can be coupled to the transceiver 1410. The transceiver 1410 is coupled to one or more antennas 1420. The transceiver 1410 provides a means for communicating with various other apparatus over a transmission medium. The transceiver 1410 receives signals from the one or more antennas 1420, extracts information from the received signals, and provides the extracted information to the processing system 1414, and in particular to the receiving component 1304. Additionally, transceiver 1410 receives information from processing system 1414, and in particular from transmit component 1312, and based on the received information, generates a signal that is applied to one or more antennas 1420. The processing system 1414 includes a processor 1404 coupled to a computer-readable medium/memory 1406. The processor 1404 is responsible for general processing, including the execution of software stored on the computer-readable medium/memory 1406. The software, when executed by the processor 1404, causes the processing system 1414 to perform the various functions described supra for any particular apparatus. The computer-readable medium/memory 1406 may also be used for storing data that is manipulated by the processor 1404 when executing software. The processing system 1414 further includes at least one of the components 1304, 1306, 1308, 1310, 1312, 1314. These components may be: a software component running in the processor 1404 that is resident/stored in the computer readable medium/memory 1406, one or more hardware components coupled to the processor 1404, or some combination thereof.
In one configuration, the means for wireless communicating 1302/1302' may include means for establishing a logical link associated with short range communication with a second device. The apparatus 1302/1302' may include means for receiving a first packet carried on a logical link. The apparatus 1302/1302' may include means for transmitting at least a portion of the first PDU data included in the first packet to a higher layer of the first device when the first PDU data passes a decoding check. When the first PDU data fails the decoding check, the means 1302/1302' may include: means for determining a first operating mode from a plurality of operating modes for error correction based on the logical link; means for receiving a set of retransmission packets over the logical link, each retransmission packet in the set of retransmission packets including respective PDU data that is a retransmission of the first PDU data; and means for applying a first mode of operation for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
The apparatus 1302/1302' may include means for determining a type of logical link, wherein the first mode of operation for error correction is determined based on the type of logical link. In one aspect, the type of logical link is determined based on at least one of an access address or LT _ ADDR indicated by at least one header of at least one packet received over the logical link.
In one aspect, the logical link comprises one of an ACL link or an A2DP link, and the first mode of operation comprises a soft combining mode based on the ACL link or the A2DP link. In one aspect, when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first PDU data of the first packet that includes the first payload data and the first MIC value and further based on corresponding PDU data of each of a set of retransmission packets that includes the corresponding payload data and the corresponding MIC value. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted. In another aspect, when the first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets remain encrypted.
In one aspect, when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction includes a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets. In one aspect, a first mode of operation for error correction is applied without utilizing a first MIC value and without utilizing each of the respective MIC values when the first PDU data packet of the first packet includes the first MIC value and when the respective PDU data packet of each of the set of retransmit packets includes the respective MIC value. In one aspect, when a first mode of operation for error correction is applied, the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted.
In one aspect, when the first mode of operation for error correction comprises a soft combining mode, the means for applying the first mode of operation for error correction is configured to: storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check. In one aspect, each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
In one aspect, the logical link comprises an eSCO link, and the first mode of operation comprises an QBm mode based on the eSCO link. In one aspect, when the first mode of operation for error correction comprises the QBm mode, the means for applying the first mode of operation for error correction is configured to: performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; and determining a set of bit error quality metrics based on the set of estimated bit values.
In one aspect, the logical link comprises an ISO link and the first mode of operation for error correction comprises an QBm-H mode based on the ISO link. In one aspect, when the first mode of operation for error correction comprises the QBm-H mode, the means for applying the first mode of operation for error correction is configured to: performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another of the set of retransmission packets; determining a set of estimated bit values based on performing a bit-wise majority function; determining a set of bit error quality metrics based on the set of estimated bit values; and discarding one or more additional retransmission packets received after the one retransmission packet and the another retransmission packet in the set of retransmission packets when the one or more additional retransmission packets include a retransmission of the first PDU data of the first packet. In one aspect, when the first mode of operation for error correction comprises the QBm-H mode, and when the set of retransmission packets comprises three or more retransmission packets, the means for applying the first mode of operation for error correction is configured to: storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet; for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with a signed value, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets; mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of the set of estimated bit values; and determining whether the set of estimated bit values passes a decoding check.
In one aspect, the apparatus 1302/1302' includes: means for generating an estimated CRC value based on a set of estimated bit values obtained based on application of a first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data; and means for comparing the estimated CRC value with a first CRC value included in a most recently received retransmission packet of the set of retransmission packets, wherein the set of estimated bit values passes the decoding check based on comparing the estimated CRC value with the first CRC value, and wherein the set of estimated bit values fails the decoding check when the generated CRC value is different from the first CRC value.
In one aspect, the apparatus 1302/1302' includes: means for generating an estimated Message Integrity Code (MIC) value based on a set of estimated bit values, and means for comparing the estimated MIC value to a first MIC value included in a most recently received retransmission packet of the set of retransmission packets, wherein the set of estimated bit values passes a decode check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, and wherein the set of estimated bit values fails the decode check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
In one aspect, the apparatus 1302/1302' includes: means for issuing, to a higher layer of the first device, a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be at least a portion of the first PDU data. In one aspect, the apparatus 1302/1302' includes: means for determining a set of bit errors associated with the set of estimated bit values based on applying a first mode of operation for error correction; means for issuing at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of positions of a set of bit errors or a number of the set of bit errors.
The aforementioned components may be one or more of the following: the aforementioned processor(s) 202, short-range communication controller 252, and/or radio 230, components of apparatus 1302, and/or processing system of apparatus 1302' of fig. 2 are configured to perform the functions recited by the aforementioned components.
It should be understood that the specific order or hierarchy of blocks in the processes/flow diagrams disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of blocks in the processes/flow diagrams can be rearranged. Furthermore, certain blocks may be combined or omitted. The accompanying method claims present elements of the various blocks in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean "one and only one" unless specifically so stated, but rather "one or more. The word "exemplary" is used herein to mean "serving as an example, instance, or illustration. Any aspect described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other aspects. The term "some" refers to one or more unless specifically stated otherwise. Combinations such as "at least one of A, B or C", "one or more of A, B or C", "at least one of A, B and C", "one or more of A, B and C", and "A, B, C or any combination thereof" include any combination of A, B and/or C, and may include multiples of a, multiples of B, or multiples of C. Specifically, agents such as "at least one of A, B or C", "one or more of A, B or C", "at least one of A, B and C", "one or more of A, B and C", and "A, B, C or any combination thereof" may be a only, B only, C, A and B, A and C, B and C only, or a and B and C, where any such combination may contain one or more members of A, B or C. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. The words "module," mechanism, "" element, "" device, "etc. may not be a substitute for the word" component. As such, unless the phrase "a component for … …" is used to explicitly recite a claim element, no claim element should be construed as a component plus function.

Claims (61)

1. A method of wireless communication by a first device, the method comprising:
establishing a logical link associated with short-range communication with a second device;
receiving a first packet carried on the logical link;
issuing, to a higher layer of the first device, at least a portion of first Packet Data Unit (PDU) data included in the first packet when the first PDU data passes a decoding check; and
when the first PDU data fails the decoding check:
determining a first mode of operation from a plurality of modes of operation for error correction based on the logical link;
receiving a set of retransmission packets over the logical link, each retransmission packet of the set of retransmission packets including respective PDU data that is a retransmission of the first PDU data; and
applying the first mode of operation for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
2. The method of claim 1, further comprising:
determining a type of the logical link, wherein the first mode of operation for error correction is determined based on the type of the logical link.
3. The method of claim 2, wherein the type of logical link is determined based on at least one of an Access Address (AA) or a logical transport address (LT ADDR) indicated by at least one header of at least one packet received over the logical link.
4. The method of claim 1, wherein the logical link comprises one of an Asynchronous Connectionless (ACL) link or an advanced audio distribution profile (A2DP) link, and the first mode of operation comprises a soft combining mode based on the ACL link or the A2DP link.
5. The method of claim 4, wherein when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmission packets, and when the first mode of operation for error correction includes the soft combining mode, applying the first mode of operation for error correction based on the first PDU data of the first packet including a first payload data and a first Message Integrity Code (MIC) value and further based on the corresponding PDU data of each of the set of retransmission packets including a corresponding payload data and a corresponding MIC value.
6. The method of claim 5, wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
7. The method of claim 4, wherein when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction comprises a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets.
8. The method of claim 7, wherein when the first PDU data packet of the first packet includes a first Message Integrity Code (MIC) value and when the respective PDU data packet of each of the set of retransmit packets includes a respective MIC value, the first mode of operation for error correction is applied without utilizing the first MIC value and without utilizing each of the respective MIC values.
9. The method of claim 7, wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
10. The method of claim 4, wherein when the first mode of operation for error correction comprises the soft combining mode, applying the first mode of operation for error correction comprises:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for the each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
11. The method of claim 10, wherein each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
12. The method of claim 1, wherein the logical link comprises an extended synchronous connection-oriented (eSCO) link, and the first mode of operation comprises a quality bitmask (QBm) mode based on the eSCO link.
13. The method of claim 12, wherein when the first mode of operation for error correction comprises the QBm mode, applying the first mode of operation for error correction comprises:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function; and
a set of bit error quality metrics is determined based on the set of estimated bit values.
14. The method of claim 1, wherein the logical link comprises an Isochronous (ISO) link and the first mode of operation for error correction comprises a quality bit mask hybrid (QBm-H) mode based on the ISO link.
15. The method of claim 14, wherein when the first mode of operation for error correction comprises the QBm-H mode, applying the first mode of operation for error correction comprises:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function;
determining a set of bit error quality metrics based on the set of estimated bit values; and
discarding one or more additional retransmission packets received after the one and the other retransmission packets in the set of retransmission packets when the one or more additional retransmission packets include a retransmission of the first PDU data of the first packet.
16. The method of claim 14, wherein when the first mode of operation for error correction comprises the QBm-H pattern, and when the set of retransmission packets comprises three or more retransmission packets, applying the first mode of operation for error correction comprises:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
17. The method of claim 1, further comprising:
generating an estimated Cyclic Redundancy Check (CRC) value based on a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data; and
comparing the estimated CRC value with a first CRC value included in a most recently received retransmission packet of the set of retransmission packets,
wherein the set of estimated bit values passes the decoding check based on comparing the estimated CRC value to the first CRC value, and wherein the set of estimated bit values fails the decoding check when the generated CRC value is different from the first CRC value.
18. The method of claim 17, further comprising:
generating an estimated Message Integrity Code (MIC) value based on the set of estimated bit values; and
comparing the estimated MIC value with a first MIC value included in the most recently received retransmission packet of the set of retransmission packets,
wherein the set of estimated bit values passes the decoding check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, and wherein the set of estimated bit values fails the decoding check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
19. The method of claim 1, further comprising:
issuing, to a higher layer of the first device, a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be at least a portion of first PDU data.
20. The method of claim 19, further comprising:
determining a set of bit errors associated with a set of estimated bit values based on applying the first mode of operation for error correction;
issuing at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of locations of the set of bit errors or a number of the set of bit errors.
21. An apparatus for wireless communication, the apparatus comprising:
a memory; and
at least one processor coupled to the memory and configured to:
establishing a logical link associated with short-range communication with a second device;
receiving a first packet carried on the logical link;
issuing, to a higher layer of the first device, at least a portion of first Packet Data Unit (PDU) data included in the first packet when the first PDU data passes a decoding check; and
when the first PDU data fails the decoding check:
determining a first mode of operation from a plurality of modes of operation for error correction based on the logical link;
receiving a set of retransmission packets over the logical link, each retransmission packet of the set of retransmission packets including respective PDU data that is a retransmission of the first PDU data; and
applying the first mode of operation for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
22. The apparatus of claim 21, wherein the at least one processor is further configured to:
determining a type of the logical link, wherein the first mode of operation for error correction is determined based on the type of the logical link.
23. The apparatus of claim 22, wherein the type of logical link is determined based on at least one of an Access Address (AA) or a logical transmit address (LT ADDR) indicated in at least one header of at least one packet received over the logical link.
24. The apparatus of claim 21, wherein the logical link comprises one of an Asynchronous Connectionless (ACL) link or an advanced audio distribution profile (A2DP) link, and the first mode of operation comprises a soft combining mode based on the ACL link or the A2DP link.
25. The apparatus of claim 24, wherein when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmission packets, and when the first mode of operation for error correction comprises the soft combining mode, the first mode of operation for error correction is applied based on the first PDU data of the first packet including a first payload data and a first Message Integrity Code (MIC) value and further based on the corresponding PDU data of each of the set of retransmission packets including a corresponding payload data and a corresponding MIC value.
26. The apparatus of claim 25, wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
27. The apparatus of claim 24, wherein when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction comprises a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets.
28. The apparatus of claim 27, wherein when the first PDU data packet of the first packet includes a first Message Integrity Code (MIC) value and when the respective PDU data of each of the set of retransmit packets includes a respective MIC value, the first mode of operation for error correction is applied without utilizing the first MIC value and without utilizing each of the respective MIC values.
29. The apparatus of claim 27, wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
30. The apparatus of claim 24, wherein when the first mode of operation for error correction comprises the soft combining mode, the applying of the first mode of operation for error correction comprises:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
31. The apparatus of claim 30, wherein each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
32. The apparatus of claim 21, wherein the logical link comprises an extended synchronous connection-oriented (eSCO) link, and the first mode of operation comprises a quality bitmask (QBm) mode based on the eSCO link.
33. The apparatus of claim 32, wherein when the first mode of operation for error correction comprises the QBm mode, application of the first mode of operation for error correction comprises:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function; and
a set of bit error quality metrics is determined based on the set of estimated bit values.
34. The apparatus of claim 21, wherein the logical link comprises an Isochronous (ISO) link and the first mode of operation for error correction comprises a quality bit mask hybrid (QBm-H) mode based on the ISO link.
35. The apparatus of claim 34, wherein when the first mode of operation for error correction comprises the QBm-H mode, application of the first mode of operation for error correction comprises:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function;
determining a set of bit error quality metrics based on the set of estimated bit values; and
discarding one or more additional retransmission packets received after the one and the other retransmission packets in the set of retransmission packets when the one or more additional retransmission packets include a retransmission of the first PDU data of the first packet.
36. The apparatus of claim 34, wherein when the first mode of operation for error correction comprises the QBm-H pattern, and when the set of retransmission packets comprises three or more retransmission packets, application of the first mode of operation for error correction comprises:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
37. The apparatus of claim 21, wherein the at least one processor is further configured to:
generating an estimated Cyclic Redundancy Check (CRC) value based on a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data; and
comparing the estimated CRC value with a first CRC value included in a most recently received retransmission packet of the set of retransmission packets,
wherein the set of estimated bit values passes the decoding check based on a comparison of an estimated CRC value and the first CRC value, and wherein the set of estimated bit values fails the decoding check when the generated CRC value is different from the first CRC value.
38. The apparatus of claim 37, wherein the at least one processor is further configured to:
generating an estimated Message Integrity Code (MIC) value based on the set of estimated bit values; and
comparing the estimated MIC value with a first MIC value included in the most recently received retransmission packet of the set of retransmission packets,
wherein the set of estimated bit values passes the decoding check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, and wherein the set of estimated bit values fails the decoding check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
39. The apparatus of claim 21, wherein the at least one processor is further configured to:
issuing, to a higher layer of the first device, a set of estimated bit values obtained based on application of the first mode of operation for error correction, the set of estimated bit values estimated to be at least a portion of first PDU data.
40. The apparatus of claim 19, wherein the at least one processor is further configured to:
determining a set of bit errors associated with a set of estimated bit values based on applying the first mode of operation for error correction;
issuing at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of locations of the set of bit errors or a number of the set of bit errors.
41. An apparatus for wireless communication, the apparatus comprising:
means for establishing a logical link associated with short range communication with a second device;
means for receiving a first packet carried on the logical link;
means for issuing, when first Packet Data Unit (PDU) data included in the first packet passes a decoding check, at least a portion of the first PDU data to a higher layer of the first device; and
when the first PDU data fails the decoding check:
means for determining a first mode of operation from a plurality of modes of operation for error correction based on the logical link;
means for receiving a set of retransmission packets over the logical link, each retransmission packet of the set of retransmission packets including respective PDU data that is a retransmission of the first PDU data; and
means for applying the first mode of operation for error correction based on the first PDU data included in the first packet and the corresponding PDU data included in each retransmission packet of the set of retransmission packets.
42. The apparatus of claim 41, further comprising:
means for determining a type of the logical link, wherein the first mode of operation for error correction is determined based on the type of the logical link.
43. The apparatus of claim 42, wherein the type of logical link is determined based on at least one of an Access Address (AA) or a logical transport address (LT _ ADDR) indicated in at least one header of at least one packet received over the logical link.
44. The apparatus of claim 41, wherein the logical link comprises one of an Asynchronous Connectionless (ACL) link or an advanced audio distribution profile (A2DP) link, and the first mode of operation comprises a soft combining mode based on the ACL link or the A2DP link.
45. The apparatus of claim 44, wherein when the first packet is associated with a first random number for decryption that matches a corresponding random number for decryption of each of the retransmission packets, and when the first mode of operation for error correction includes the soft combining mode, the first mode of operation for error correction is applied based on the first PDU data of the first packet including a first payload data and a first Message Integrity Code (MIC) value and further based on the corresponding PDU data of each of the set of retransmission packets including a corresponding payload data and a corresponding MIC value.
46. The apparatus of claim 45 wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
47. The apparatus of claim 44, wherein when the first packet is associated with a first random number for decryption that is different from a corresponding random number associated with decryption of at least one of the set of retransmission packets, and when the first mode of operation for error correction comprises a soft combining mode, the first mode of operation for error correction is applied based on first payload data included in the first PDU data of the first packet and further based on corresponding payload data included in the corresponding PDU data of each of the set of retransmission packets.
48. The apparatus of claim 47, wherein the first mode of operation for error correction is applied without utilizing the first MIC value and without utilizing each of the respective MIC values when the first PDU data packet of the first packet comprises a first Message Integrity Code (MIC) value and when the respective PDU data packet of each of the set of retransmit packets comprises a respective MIC value.
49. The apparatus of claim 47, wherein the first PDU data of the first packet and the corresponding PDU data of each retransmission packet of the set of retransmission packets are decrypted when the first mode of operation for error correction is applied.
50. The apparatus of claim 44, wherein when the first mode of operation for error correction comprises the soft combining mode, the means for applying the first mode of operation for error correction is configured to:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
51. The apparatus of claim 50, wherein each buffer in the set of buffers is bounded by a minimum threshold and a maximum threshold, and each accumulated soft value in the set of soft values accumulated in each buffer in the set of buffers does not exceed the minimum threshold and does not exceed the maximum threshold.
52. The apparatus of claim 41, wherein the logical link comprises an extended synchronous connection oriented (eSCO) link, and the first mode of operation comprises a quality bitmask (QBm) mode based on the eSCO link.
53. The apparatus of claim 52, wherein when the first mode of operation for error correction comprises the QBm mode, the means for applying the first mode of operation for error correction is configured to:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function; and
a set of bit error quality metrics is determined based on the set of estimated bit values.
54. The apparatus of claim 51, wherein the logical link comprises an Isochronous (ISO) link and the first mode of operation for error correction comprises a quality bit mask hybrid (QBm-H) mode based on the ISO link.
55. The apparatus of claim 54, wherein when the first mode of operation for error correction comprises the QBm-H mode, the means for applying the first mode of operation for error correction is configured to:
performing a bit-wise majority function based on a first set of bits of the first PDU data of the first packet, a second set of bits of one corresponding PDU data of one of the set of retransmission packets, and a third set of bits of another corresponding PDU data of another one of the set of retransmission packets;
determining a set of estimated bit values based on performing the bit-wise majority function;
determining a set of bit error quality metrics based on the set of estimated bit values; and
discarding one or more additional retransmission packets received after the one and the other retransmission packets in the set of retransmission packets when the one or more additional retransmission packets include a retransmission of the first PDU data of the first packet.
56. The apparatus of claim 54, wherein when the first mode of operation for error correction comprises the QBm-H pattern, and when the set of retransmission packets comprises three or more retransmission packets, the means for applying the first mode of operation for error correction is configured to:
storing each soft value in a set of soft values in each buffer in a set of buffers, each soft value in the set of soft values being a three-bit signed soft value based on a respective bit of the first PDU data of the first packet;
for each retransmission packet in the set of retransmission packets, accumulating, in each buffer in the set of buffers, each soft value in the set of soft values with signed values, each of the signed values being based on a corresponding bit of the respective PDU data for the each retransmission packet in the set of retransmission packets;
mapping each accumulated soft value of the set of soft values accumulated in each buffer of the set of buffers to a bit value of a set of estimated bit values; and
determining whether the set of estimated bit values passes the decoding check.
57. The apparatus of claim 41, further comprising:
means for generating an estimated Cyclic Redundancy Check (CRC) value based on a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be included in the first PDU data; and
means for comparing the estimated CRC value with a first CRC value included in a most recently received retransmission packet of the set of retransmission packets,
wherein the set of estimated bit values passes the decoding check based on comparing an estimated CRC value to the first CRC value, and wherein the set of estimated bit values fails the decoding check when the generated CRC value is different from the first CRC value.
58. The apparatus of claim 57, further comprising:
means for generating an estimated Message Integrity Code (MIC) value based on a set of estimated bit values; and
means for comparing the estimated MIC value with a first MIC value included in the most recently received retransmitted packet in the set of retransmitted packets,
wherein the set of estimated bit values passes the decoding check when the estimated CRC value matches the first CRC value and the estimated MIC value matches the first MIC value, and wherein the set of estimated bit values fails the decoding check when the estimated CRC value is different from the first CRC value or when the estimated MIC value is different from the first MIC value.
59. The apparatus of claim 41, further comprising:
means for issuing, to a higher layer of the first device, a set of estimated bit values obtained based on applying the first mode of operation for error correction, the set of estimated bit values estimated to be at least a portion of first PDU data.
60. The apparatus of claim 59, further comprising:
means for determining a set of bit errors associated with a set of estimated bit values based on applying the first mode of operation for error correction; and
means for issuing at least one bit error quality metric to a higher layer of the first device, the at least one bit error quality metric indicating at least one of a set of locations of the set of bit errors or a number of the set of bit errors.
61. A computer-readable medium storing computer executable code for wireless communication by a first device, comprising code for:
establishing a logical link associated with short-range communication with a second device;
receiving a first packet carried on the logical link;
issuing, to a higher layer of the first device, at least a portion of first Packet Data Unit (PDU) data included in the first packet when the first PDU data passes a decoding check; and
when the first PDU data fails the decoding check:
determining a first mode of operation from a plurality of modes of operation for error correction based on the logical link;
receiving a set of retransmission packets over the logical link, each retransmission packet of the set of retransmission packets including respective PDU data that is a retransmission of the first PDU data; and
applying the first mode of operation for error correction based on the first PDU data included in the first packet and the respective PDU data included in each retransmission packet of the set of retransmission packets.
CN202080011566.8A 2019-02-05 2020-01-22 Error correction of data packets in short-range wireless communication systems Pending CN113366871A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/268,395 2019-02-05
US16/268,395 US10911184B2 (en) 2019-02-05 2019-02-05 Error correction for data packets in short-range wireless communications systems
PCT/US2020/014543 WO2020163082A1 (en) 2019-02-05 2020-01-22 Error correction for data packets in short-range wireless communications systems

Publications (1)

Publication Number Publication Date
CN113366871A true CN113366871A (en) 2021-09-07

Family

ID=69714097

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080011566.8A Pending CN113366871A (en) 2019-02-05 2020-01-22 Error correction of data packets in short-range wireless communication systems

Country Status (5)

Country Link
US (1) US10911184B2 (en)
EP (1) EP3922050A1 (en)
CN (1) CN113366871A (en)
TW (1) TWI745841B (en)
WO (1) WO2020163082A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826752A (en) * 2022-04-29 2022-07-29 深圳市汇顶科技股份有限公司 Signal encryption method, signal encryption device and terminal equipment

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11190941B2 (en) * 2019-05-14 2021-11-30 Bastille Networks, Inc. Traffic and threat classification for short-range wireless channels
JP7282597B2 (en) * 2019-05-28 2023-05-29 ルネサスエレクトロニクス株式会社 Wireless communication device and communication system
US20210203454A1 (en) * 2019-12-31 2021-07-01 Samsung Electronics Co., Ltd. Method for transceiving data in bluetooth network environment and electronic device thereof
EP4115307A4 (en) * 2020-03-04 2024-04-03 Fort Robotics, Inc. Secure wireless communication of robotic safety state information
US11418297B2 (en) * 2020-03-31 2022-08-16 Bose Corporation Systems and methods including wireless data packet retransmission schemes
US11290209B2 (en) * 2020-07-17 2022-03-29 Audiowise Technology Inc. Wireless communication method and wireless communication device which uses the wireless communication method
US11677494B2 (en) * 2021-01-19 2023-06-13 Avago Technologies International Sales Pte. Limited Enhanced error protection of payload using double CRC
US20220383881A1 (en) * 2021-05-27 2022-12-01 Qualcomm Incorporated Audio encoding based on link data
US12008099B2 (en) 2022-04-19 2024-06-11 Fort Robotics, Inc. Method for safety responses to security policy violations

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110022916A1 (en) * 2009-07-24 2011-01-27 Prasanna Desai Method and system for saving power for packet re-transmission in an encrypted bluetooth low power link layer connection
CN102017497A (en) * 2008-05-06 2011-04-13 阿尔卡特朗讯公司 Recovery of transmission errors
CN102771072A (en) * 2010-01-25 2012-11-07 高通股份有限公司 Majority vote error correction technical field
US20160210189A1 (en) * 2015-01-15 2016-07-21 Texas Instruments Incorporated Robust Connection for Low-Energy Wireless Networks

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7855973B2 (en) * 2004-07-14 2010-12-21 Sony Ericsson Mobile Communications Ab Apparatus, methods and computer program products for transmission of data over an adjustable synchronous radio channel
US9756549B2 (en) 2014-03-14 2017-09-05 goTenna Inc. System and method for digital communication between computing devices
DE102015208547A1 (en) * 2014-05-09 2015-11-12 Apple Inc. ADVANCED BLUETOOTH COMMUNICATION MODES
US10491341B2 (en) 2015-03-17 2019-11-26 Sony Corporation Telecommunication devices and methods for performing data retransmission in a telecommunications system
WO2016159686A1 (en) 2015-03-31 2016-10-06 엘지전자 주식회사 Buffer management method for d2d communication, and wireless device
EP3308527B1 (en) 2015-06-15 2020-01-15 Telefonaktiebolaget LM Ericsson (publ) File transfer by mobile user collaboration
US10367609B2 (en) * 2017-09-20 2019-07-30 Qualcomm Incorporated Error correction for data packets transmitted using an asynchronous connection-less communication link
JP6481988B2 (en) 2018-03-05 2019-03-13 サン パテント トラスト Integrated circuit

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102017497A (en) * 2008-05-06 2011-04-13 阿尔卡特朗讯公司 Recovery of transmission errors
US20110022916A1 (en) * 2009-07-24 2011-01-27 Prasanna Desai Method and system for saving power for packet re-transmission in an encrypted bluetooth low power link layer connection
CN102771072A (en) * 2010-01-25 2012-11-07 高通股份有限公司 Majority vote error correction technical field
US20160210189A1 (en) * 2015-01-15 2016-07-21 Texas Instruments Incorporated Robust Connection for Low-Energy Wireless Networks

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826752A (en) * 2022-04-29 2022-07-29 深圳市汇顶科技股份有限公司 Signal encryption method, signal encryption device and terminal equipment
CN114826752B (en) * 2022-04-29 2024-02-27 深圳市汇顶科技股份有限公司 Signal encryption method, signal encryption device and terminal equipment

Also Published As

Publication number Publication date
EP3922050A1 (en) 2021-12-15
TW202038569A (en) 2020-10-16
TWI745841B (en) 2021-11-11
US10911184B2 (en) 2021-02-02
WO2020163082A1 (en) 2020-08-13
US20200252162A1 (en) 2020-08-06

Similar Documents

Publication Publication Date Title
US10911184B2 (en) Error correction for data packets in short-range wireless communications systems
US10784993B1 (en) Soft combining packets received from different piconets
US11558155B2 (en) Broadcast relay piconet for low energy audio
US20200329052A1 (en) System and method for aligning a packet counter in short-range wireless communications systems
US11452005B2 (en) System and method for construction of a protocol data unit using selective relay
US20230111742A1 (en) Real-time soft combining, crc validation, and mic validation of decrypted packets
US11275648B2 (en) Empty data packet hard align
US10367609B2 (en) Error correction for data packets transmitted using an asynchronous connection-less communication link
US11330468B2 (en) Low power techniques for bluetooth low energy in scanning state
CN114731228B (en) Method and apparatus for MIC recovery for BR/EDR links
WO2023159417A1 (en) Low power adaptive power control

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination