The present disclosure relates to wireless communications and in particular to a method and system for classifying Classic Bluetooth packets and determining the most likely upper address parts (UAPs) and packet data units (PDUs), with no a priori knowledge of the piconets from which they emerge, and with no a priori knowledge of the Bluetooth Device Addresses (BD_ADDRs) associated with any devices.
The Bluetooth system is specified in “Specification of the Bluetooth® System, Covered Core Package Version: 5.0, Publication Date: Dec. 6, 2016”. Bluetooth operation is in the unlicensed Industrial, Scientific, and Medical (ISM) band from 2.400 to 2.4835 GHz. Classic Bluetooth Basic Rate (BR) and Bluetooth Low Energy (BLE) employ Gaussian Frequency-Shift Keying (GFSK) as the primary modulation scheme, while Classic Bluetooth Enhanced Data Rate (EDR) incorporates differential phase-shift keying (DPSK) for increased throughput as compared with BR. Classic Bluetooth (BR) may occupy any of 79 radio frequency (RF) channels, spaced by 1 MHz, whereas BLE is limited to 40 RF channels, spaced by 2 MHz. For both BR and BLE, the nominal channel symbol rate is 1 MHz, with a nominal channel symbol duration of 1 μs (microsecond).
A more complete understanding of the present embodiments, and the attendant advantages and features thereof, will be more readily understood by first describing relevant Bluetooth system details. Relevant details of the Bluetooth system are therefore presented herein. A more complete description can be obtained by reference to the Specification of the Bluetooth® System.
Bluetooth is a time division multiplex (TDM) system that includes a “Master” device, which initiates an exchange of data, and a “Slave” device which responds to the Master. The time division multiple access (TDMA) slot duration is 625 μs, and the maximum payload length is such that certain packet types may extend up to five slots in length. Each device hops to an RF channel once per packet and Slave devices will utilize the timing of their Master to hop in synchronization. Hopping is based on a defined pseudo random sequence based upon the device address of the Master.
To indicate the different packets on a logical transport, the 4-bit TYPE code may be used. The packet types are divided into four segments. The first segment is reserved for control packets. All control packets occupy a single time slot. The second segment is reserved for packets occupying a single time slot. The third segment is reserved for packets occupying three time slots. The fourth segment is reserved for packets occupying five time slots. The slot occupancy is reflected in the segmentation and can directly be derived from the type code.
The packet types used on the Bluetooth piconet are known and are described, for example, in Clause 6.5 of the Specification of the Bluetooth® System 5.0. The packets used on the piconet are related to the logical transports on which they are used. Four logical transports with distinct packet types are defined:
Blind demodulation and decoding of Classic Bluetooth packets entail synchronizing to packets, and decoding them, with no a priori knowledge of the piconets from which packets emerge, and no a priori knowledge of any specific Bluetooth Device Addresses (BD_ADDRs). As shown in
In the normal case, the Basic Rate (BR) receiver has a priori knowledge of the Access Code 210 and can therefore correlate to the sync word 420 establishing the packet time of arrival and instantaneous offset frequency. When employing a Bluetooth monitoring receiver that is listening for Bluetooth packets on a particular channel, or indeed on all the channels, the LAP 110 is not known and hence the detector cannot synchronize to a packet using standard techniques. Furthermore, once synchronized to a packet, there is no a priori knowledge of the whitening sequence generator's initial state/seed, which can be one of 64 possibilities. Finally, encoding of both the 8-bit Header Error Check (HEC) 660, transmitted during the GFSK Packet Header 220, and the 16-bit payload CRC 840, which appears at the end of certain packet types, utilize the 8-bit Upper Address Part (UAP) 120 of the BD_ADDR 100, of which, again, the blind decoder has no a priori knowledge.
A method and receiver for the classification of Classic Bluetooth packets and the determination of the most likely UAPs and PDUs, with no a priori knowledge of the piconets from which they emerge, or of the BD_ADDRs associated with any devices, are disclosed.
According to one aspect, a method of decoding packets in a receiver is provided. The method includes detecting a packet using blind LAP detection, the detecting including providing symbol timing estimation and frequency and DC offset correction; estimating a duration of a payload of the packet. The method also includes decoding a packet over the estimated duration according to each of a plurality of forward error correction (FEC) coding rates to produce a packet header and prospective payloads. The method also includes, for each of a plurality of de-whitening seeds, performing de-whitening, extraction and reverse decoding on the packet header to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The method further includes obtaining a subset of the candidate UAPs, each candidate UAP having a corresponding CRC code. The method includes forming an ordered list of candidate packet types based at least in part on the estimated duration. The method further includes performing a cyclic redundancy check (CRC) on the CRC code in each candidate UAP corresponding to a candidate packet type in the ordered list until a CRC code passes the CRC check. The method also includes selecting a UAP having the CRC code that passes the CRC, and returning a packet data unit (PDU) corresponding to the selected UAP.
According to this aspect, in some embodiments, the blind LAP detection, payload duration estimation, and payload decoding is aided by collision detection. In some embodiments, estimating the payload duration is based at least in part on calculating a first estimate based on a comparison of a look-ahead maximum energy and a running average of received energy, and calculating a second estimate based on subtraction of a first symbol and a factor accounting for a ramp-down of a power amplifier. In some embodiments, the method further includes estimating a modulation index based at least in part on averaging deviations over the packet header, and calculating a signal to noise ratio for the packet header and for the payload of the packet. In some embodiments, the decoding includes classifying an FEC rate as one of 1, ⅓ and ⅔ based on a measured rate of zero syndrome occurrences. In some embodiments, the method further includes creating a table of de-whitening seeds, where for each de-whitening seed there is a corresponding reverse decoded UAP and a packet header type field (PHTF) in the table. In some embodiments, forming the ordered list of candidate packet types includes estimating a packet type based at least in part on packet length, signal to noise ratio (SNR), and elements of FEC rate estimate. In some embodiments the method includes performing a check for packet types based on the estimate, and sorting a remaining set of candidate packets based at least in part on whether modulation is Gaussian frequency shift keying (GFSK), and based at least in part on packet length estimate and estimated FEC rate. In some embodiments, the method further includes for packet types having one of a payload header and a fixed payload length, and for each de-whitening candidate: computing an expected CRC location and performing a CRC of the PDU based on the computed expected CRC location. For variable length packet types with a CRC code but no payload header some embodiments include computing a plurality of estimations of a CRC location based on an estimated payload duration, and performing a CRC for each de-whitening candidate and potential CRC location. In some embodiments, the method also includes, when a packet type has a CRC code, performing a CRC and when the CRC passes, de-whitening the packet using a seed established for the packet type, computing a PDU size based upon a position of the CRC code, and estimating an encryption type. In some embodiments, the method includes, when all seeds have been checked and no valid CRC is found, returning packet information.
According to another aspect, a receiver for blind of decoding packets is provided. The receiver includes processing circuitry configured to detect a packet using blind LAP detection, the detecting including providing symbol timing estimation and frequency and DC offset correction. The processing circuitry is further configured to estimate a duration of a payload of the packet and decode the packet over the estimated duration according to each of a plurality of forward error correction (FEC) coding rates to produce a packet header and prospective payloads. The processing circuitry is further configured to: for each of a plurality of de-whitening seeds, perform de-whitening, extraction and reverse decoding on the packet header to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The processing circuitry is further configured to obtain a subset of the candidate UAPs, each candidate UAP having a corresponding CRC code. The processing circuitry is further configured to form an ordered list of candidate packet types based at least in part on the estimated duration and perform a cyclic redundancy check (CRC) on the CRC code in each candidate UAP corresponding to a candidate packet type in the ordered list until a CRC code passes the CRC check. The processing circuitry is also configured to select a UAP having the CRC code that passes the CRC, and return a packet data unit (PDU) corresponding to the selected UAP.
According to this aspect, in some embodiments, the blind LAP detection, payload duration estimation, and payload decoding is aided by collision detection. In some embodiments, estimating the payload duration is based at least in part on: calculating a first estimate based on a comparison of a look-ahead maximum energy and a running average of received energy; and calculating a second estimate based on subtraction of a first symbol and a factor accounting for a ramp-down of a power amplifier. In some embodiments, the processing circuitry is further configured to: estimate a modulation index based at least in part on averaging deviations over the packet header; and calculate a signal to noise ratio for the packet header and for the payload of the packet. In some embodiments, the decoding includes classifying an FEC rate as one of 1, ⅓ and ⅔ based on a measured rate of zero syndrome occurrences. In some embodiments, the processing circuitry is further configured to create a table of de-whitening seeds, where for each de-whitening seed there is a corresponding reverse decoded UAP and a packet header type field (PHTF) in the table. In some embodiments, forming the ordered list of candidate packet types comprises: estimating a packet type based at least in part on packet length, signal to noise ratio (SNR), and elements of FEC rate estimate; performing a check for packet types based on the estimate; and sorting a remaining set of candidate packets based at least in part on whether modulation is Gaussian frequency shift keying (GFSK), and based at least in part on packet length estimate and estimated FEC rate. In some embodiments, the processing circuitry is further configured to: for packet types having one of a payload header and a fixed payload length, and for each de-whitening candidate, compute an expected CRC location and perform a CRC of the PDU based on the computed expected CRC location. For variable length packet types with a CRC code but no payload header, in some embodiments, the processing circuitry is further configured to compute a plurality estimations of a CRC location based on an estimated payload duration; and perform a CRC for each de-whitening candidate and potential CRC location. In some embodiments, the processing circuitry is further configured to, when a packet type has a CRC code, perform a CRC and when the CRC passes, the processing circuitry is configured to de-whiten the packet using a seed established for the packet type, compute a PDU size based upon a position of the CRC code, and estimate an encryption type. In some embodiments, the processing circuitry is further configured to, when all seeds have been checked and no valid CRC is found, return packet information.
According to another aspect, a method of decoding packets in a receiver is provided. The method includes determining a lower address part (LAP) of a packet by comparing a portion of the packet to at least one synchronization word. The method also includes decoding a portion of the packet using each of a plurality of de-whitening seeds to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The method also includes determining a subset of the plurality of information fields, each information field in the subset having a different candidate UAP, each candidate UAP having a corresponding CRC code. The method further includes performing a cyclic redundancy check (CRC) on the CRC code in each candidate UAP, until a CRC code passes the CRC. The method also includes selecting a UAP having the CRC code that passes the CRC, selecting a packet data unit (PDU) corresponding to the selected UAP.
According to this aspect, in some embodiments, the method further includes determining a location of the CRC code within a candidate PDU based on a packet type of the candidate PDU, the candidate PDU corresponding to one of the different candidate UAPs. In some embodiments, the packet type includes packets having at least one of a payload header, a fixed payload length, and a variable length. In some embodiments, the method further includes selecting the packet type from a list of packet types based at least in part on a comparison of a measurement of a signal qualifier over a payload portion of the decoded PDU to a first threshold. In some embodiments, obtaining the list of packet types based at least in part on a length of the decoded PDU. In some embodiments, the sequence of bits is 64 bits long, there are 64 possible de-whitening seeds; and the first set of candidate PDUs has 16 candidate PDUs, each having a 4-bit packet header type field (PHTF) and a corresponding 8-bit UAP occurring in the first set four times. In some embodiments, the decoding includes reverse header error check, HEC, decoding. In some embodiments, the decoding includes application of a Gaussian frequency shift keyed (GFSK) access code serving as a synchronization word for the decoded PDU to the packet. In some embodiments, the GFSK access code is determined by comparing a synchronization word from the LAP to each one of a plurality of sample synchronization words. In some embodiments, the method also includes estimating a length of the packet based at least in part on a running average of received energy over a specifiable number of symbols of the packet.
According to another aspect, a receiver for blind decoding of data packets is provided. The receiver includes processing circuitry configured to determine a lower address part (LAP) of a packet by comparing a portion of the packet to at least one synchronization word. The processing circuitry is also configured to decode a portion of the packet using each of a plurality of de-whitening seeds to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The processing circuitry is further configured to determine a subset of the plurality of information fields, each information field in the subset having a different candidate UAP, each candidate UAP having a corresponding CRC code. The processing circuitry is also configured to perform a cyclic redundancy check (CRC) on the CRC code in each candidate UAP of an information field in the subset, until a CRC code passes the CRC. The processing circuitry is also configured to select a UAP having the CRC code that passes the CRC and select a packet data unit (PDU) corresponding to the selected UAP.
According to this aspect, in some embodiments, the processing circuitry is further configured to determine a location of the CRC code within a candidate PDU based on a packet type of the candidate PDU, the candidate PDU corresponding to one of the different UAPs. In some embodiments, the processing circuitry is further configured to select the packet type from a list of packet types based at least in part on a comparison of a measurement of a signal qualifier over a payload portion of the decoded PDU to a first threshold. In some embodiments, the processing circuitry is further configured to obtain the list of packet types based at least in part on a length of the decoded PDU. In some embodiments, the sequence of bits is 64 bits long; there are 64 possible de-whitening seeds, and the first set of candidate PDUs has 16 candidate PDUs, each having a 4-bit packet header type field (PHTF) and a corresponding 8-bit UAP occurring in the first set four times. In some embodiments, the decoding includes reverse header error check, HEC, decoding. In some embodiments, the decoding includes application of a Gaussian frequency shift keyed (GFSK) access code serving as a synchronization word for the decoded PDU to the packet. In some embodiments, the GFSK access code is determined by comparing a synchronization word from the LAP to each one of a plurality of sample synchronization words. In some embodiments, the processing circuitry is further configured to estimate a length of the packet based at least in part on a running average of received energy over a specifiable number of symbols of the packet.
According to yet another aspect, a method of decoding data packets in a wireless receiver is provided. The method includes, for each of at least one packet: extracting a sequence of bits of a packet at a location of a lower address part, (LAP) of the packet and comparing at least a portion of the sequence of bits to at least one sample re-encoded synchronization word to determine if an LAP is detected. When an LAP is detected, then for each of a plurality of de-whitening seeds, the method includes decoding at least a part of the packet using the de-whitening seed to produce an information field, each information field having a packet header and a candidate upper address part (UAP) to identify a first set of candidate packet data units (PDUs), each candidate UAP having a corresponding CRC code. Also, when an LAP is detected, the method also includes performing a cyclic redundancy check (CRC) on the CRC code in each candidate PDU of the first set, until a CRC code passes the CRC. Further, when an LAP is detected, the method includes selecting a PDU of the first set as the decoded PDU, the decoded PDU being the PDU having the CRC code that passes the CRC, and outputting the detected LAP, the UAP and the decoded PDU.
A more complete understanding of the present embodiments, and the attendant advantages and features thereof, will be more readily understood by reference to the following detailed description when considered in conjunction with the accompanying drawings wherein:
MIC and CRC;
Bluetooth packets;
This disclosure relates to the blind decoding of Bluetooth packets. A method and description of the algorithms is disclosed for the classification of Classic Bluetooth packets and the determination of the most likely UAPs and PDUs, with no a priori knowledge of the piconets from which they emerge, or of the BD_ADDRs associated with any devices.
A goal of a blind demodulator and decoder, for a given RF channel, is to synchronize to in-coming packets, without any a priori knowledge of prospective LAPs, and to inspect their contents, in an attempt to make a best-guess at the packet type so that both the UAP and the Packet Data Unit (PDU) may be extracted and delivered to a higher layer.
1. Payload Modulation type: GFSK, DQPSK, or DQPSK
2. Payload FEC coding rate: ⅓, ⅔, or 1
3. Packet Duration: Fixed or Variable
4. Payload Header: 0, 1, or 2 bytes
5. CRC: Present or Not Present
6. MIC: Present or Not Present
A blind synchronizer processes a received signal and outputs a stream of length 64 binary vectors. Each prospective block of 64 bits may then be checked for resemblance to a Classic Bluetooth sync word. For example, from each length-64 block, the 24-bit field corresponding to the prospective LAP can be extracted, and then a sync word re-encoding into 64 bits can be performed. In general, if the received 64 bits match the re-encoded 64 bits, an LAP is deemed to be detected, and packet processing may ensue. Bluetooth Blind detection which detects the Access Code and LAP for a Bluetooth packet for which there is no a priori knowledge of the piconet is beyond the scope of this disclosure. In this present disclosure, the ensuing processing steps, from the GFSK Packet Header, through the payload, are described and characterized. The objective is to identify and output the packet type, the UAP and the PDU.
The packet duration may be either fixed or variable, with fixed-length packets fitting within a single slot such as a single 625 μs slot, and with variable-length packets reserving either one, three, or five slots, each of predetermined duration such as 625 μs. The Specification of the Bluetooth® System allows packet types which reserve multiple slots, to be transmitted with a minimum user payload size that results in a packet occupying less than one slot. When forming the list of candidate packet types, a design option can be enforced in which expected packet types, which reserve multiple slots, may occupy all of the reserved slots.
As shown in
The sample sequence, {zm}, at the ZFE output 1250, is at a rate of Ns samples per symbol. Since the arctangent discriminator 1230 is normalized by π, the units at the LD output 1260 are half-cycles-per-sample. The conversion to frequency, CLD2Hz, in Hz, is
where Ns=samples per symbol.
In one embodiment, the symbol rate, Rs, is 1,000,000 symbols per second and for 8 samples per symbol, Ns=8, the conversion to frequency, CLD2Hz, is 400,000.
For a modulation index h, the frequency shift, Δf, is
Δf=h·Rs/2 (2)
which corresponds to an output at the LD of Δf/CLD2Hz given by:
Δf/CLD2Hz=2h·Rs/2Ns·Rs=h/Ns (3)
Hence, the frequency shift of the modulated signal results in an LD output of h/Ns.
For a modulation index, h=0.32, Δf=160,000 Hz, and for Ns=8 samples per second, the LD output is 0.04. A blind Bluetooth detector can be used to detect the Access Code and LAP for a Bluetooth packet for which there is no a priori knowledge of the piconet as well as to estimate the frequency offset. The frequency offset equates to a DC offset, , at the LD output.
A method is now disclosed for estimating the packet length.
Let {circumflex over (m)}o be the estimated sample time associated with the center of the first preamble symbol of a detected Classic Bluetooth packet. The received energy E(n) for symbol n≥0, observed at the GFSK selectivity filter output, 1220, is
where {ym} is the complex, GFSK selectivity filter 1220 output, and Ns is the number of samples per symbol.
The running average energy Eavg(n), over a window of the most recent Nw symbols, is
The running, look ahead, maximum energy Emax(n), over a window of the future Nw symbols, is
E
max(n)=maxi∈[1,N
Let be the set of symbol indices such that the following condition is met,
then n∈⇔Emax(n)≤η·Eavg (7)
The packet length, {circumflex over (L)}, in symbols, can then be estimated as
{circumflex over (L)}=(n)−n0−Δ (8)
where Δ is a factor used to subtract out the potential ramp-down of a power amplifier. If is empty, i.e., if the packet never appears to fall off, then the maximum packet length {circumflex over (L)}=2916 may be assumed. In one implementation of the disclosure, the settings Nw=32, η=0.625, and Δ=1 are used. It is understood by one skilled in the art that other values may be used and that implementations are not limited solely to the values disclosed herein.
In order to discard packets which incur collisions, additional logic may be introduced in the form of the following test. Let
E
min(n)=mini∈[1,N
and let 2 be the set of symbol indices where a rising edge has been detected in the signal envelope,
n∈
2
⇔E
min(n)≥η2·Eavg (10)
In order to discard packets where a collision has been detected, the following rule may be applied
In one implementation of the disclosure, a threshold setting η2=1.25 may be used. However, it is noted that implementations are not limited to this threshold setting and that other values may be employed.
The following is an example method for GFSK detection and sync tracking that may be used in some embodiments.
Upon LAP detection, the symbol timing and DC offset, as observed at the ZFE output, 1260 are initialized. The symbol samples, yn, for the 54 Packet Header bits, which immediately follow the 72-bit Access Code, are collected according to:
y
n
=z
{circumflex over (m)}
(12)
for n=0, 1, 2, . . . , 53, where {zm} is the ZFE output 1260, Ns is the number of samples per symbol, and {circumflex over (m)}0 is the estimated sample time, corresponding to the center of the first preamble symbol of the Access Code.
The deviation of the symbol samples, yn, is related to the modulation index as per equation (3). If there is a frequency offset, then the deviation of the symbol samples, yn, about the DC offset, , at the LD output is related to the modulation index. For the Bluetooth® System, the minimum and maximum modulation index is 0.28 and 0.35, respectively. Hence, the modulation index ĥ may be estimated by averaging the deviations over the Packet Header as follows:
where F is a factor introduced to remove scalar bias caused by inter symbol interference (ISI). A value for F of 1.05 has been found to yield good results in practice and may be used.
The GFSK Detector and Sync-Tracking blocks work in tandem and are engaged once the symbol timing estimate {circumflex over (m)}0, modulation index estimate ĥ, and DC offset estimate are available. In addition to hard bits, the Classic Bluetooth detector requires soft bits for the rate ⅓ FEC decoder, as well as a measure of the demodulated SNR during, both, the Packet Header and payload portions of the prospective GFSK packet. Starting with the first symbol of the Packet Header, the GFSK Detector/Sync-Tracker is initialized as follows:
n=0
m
0,n
={circumflex over (m)}
0+72Ns
DCtrack,n=
E
1=0 E2=0
where E1 and E2 are the values of the measured noise during the header and the payload respectively. The soft bit yn for symbol n may be computed from the deviation of the symbol samples, yn, about the DC offset, , at the LD output,
y
n
=z
m
track,n
and the bit-slicer and sync-tracking blocks perform the following update
The variation, or jitter, en of the LD output is the difference between the measured value of yn, and the value calculated as per equation (3), which is the nominal value based upon the modulation index, ĥ.
In order to track variations, the value of DCtrack,n can be updated according to
DCtrack,n+1=DCtrack,n+Cdcen (16)
Where Cdc is the DC tracking loop gain. A value for Cdc of 1/64 has been found to yield good results in practice.
The symbol timing estimate can be updated for the next symbol according to:
m
0,n+1
=m
0,n
+N
S (17)
The values of the measured noise during the header and the payload, E1 and E2, respectively, can be updated according to
E
1
=E
1
+e
n
2 for 0≤n≤53 (18)
and E2=E2+en2 for 54≤n≤{circumflex over (L)}−72−2 (19)
where {circumflex over (L)} is the packet length in symbols as calculated using equation (8). Note that the noise power estimate for the payload portion of the packet can be finalized shortly before the estimated end of the packet, e.g., two symbols prior.
The estimated signal to noise ratios (SNRs) for the Packet Header and GFSK payload portions of the packet can then be calculated as follows:
Note that for the modulation of the payload of an EDR packet, DQPSK and D8PSK, the SNR2 value may be very small. By setting a threshold for SNR2, it may be possible to distinguish between BR packets and EDR packets. This will be used later as described below with reference to
At least the following two methods may be used for decoding the rate ⅓ repetition code associated with the GFSK Packet Header, as well as the HV1 payload. For either method, 3N demodulated bits are partitioned into N 3-tuples.
According to the first method, each of the N bits, {circumflex over (d)}i(1), for i=0, 1, . . . , N−1, is decoded based on the majority rule:
where n0 is the location of the first demodulated bit of the coded signal (relative to the start of the GFSK Packet Header).
According to the second method, each of the N bits, {circumflex over (d)}i(2), for i=0, 1, . . . , N−1, is decoded based on combining of the soft bits, yn:
An example method is now disclosed for the decoding of the FEC coding. Packets with FEC are shown in
Let {right arrow over (b)}=[b0 b1 . . . b14] be a given 15-tuple of demodulated bits, ordered such that the first 5 bits are the prospective parity bits.
The syndrome {right arrow over (s)} is a 5-bit integer, computed, in binary form, as
{right arrow over (s)}={right arrow over (b)}{right arrow over (H)} mod 2 (23)
where {right arrow over (H)} is the 15×5 binary matrix shown below, derived from “FEC Sample Data” Specification of the Bluetooth® System, and is set forth below:
The decoded 10-tuple is
where {right arrow over (E)} is the 32×15 error correction matrix shown below.
Packet types are of various sizes, and use an FEC coding rate of either ⅓, ⅔, or 1, as shown in
For the prospective rate ⅓ code, a zero-syndrome is observed when all demodulated bits of a given 3-tuple are the same, and, for the prospective rate ⅔ code, a zero-syndrome is observed when a given 15-tuple produces zero syndrome, i.e., s0=0.
The probability of falsely classifying the FEC rate may be determined as follows:
Let p be the probability of random data producing a zero syndrome, where p=2−5 for rate ⅔ coding, and p=2−2 for rate ⅓ repetition coding. For estimation over n codewords, the probability of k occurrences of zero syndrome follows the binomial distribution
The more codewords n that are checked, the less the probability of a false classification. The probability Pf of falsely classifying random data as coded data is
where η is a threshold in the range 0 to 1 such that ┘∂·n┐ is the minimum number of codewords required to produce the false probability rate Pf.
For the condition 1520 rate ⅔, number of codewords n=16, and threshold η=0.3750, the false probability rate is at an acceptable level and as such, a threshold of η=0.3750 to distinguish between rate ⅔ and 1 may be used. In order to estimate the rate ⅔, it is noted that n≥12 codewords should be measured, with a fixed threshold η=0.375, in some embodiments. Note that the single-slot DV packet, which contains both un-coded voice and rate ⅔ coded data, has a fixed payload of 10 codewords and hence, does not carry enough (15,10) codewords to meet the n≥12 condition. Hence, there may be less confidence in classifying its FEC rate for packet type DV.
A method is disclosed for the packet header de-whitening process. As explained in
Therefore, for a given candidate packet type, this list of 4 seeds may be used to narrow down the candidate de-whitening indices to the four seeds which produce the PHTF corresponding to the candidate packet type.
An example method is now disclosed for forming the list of candidate packet types.
The estimated packet length, SNRs, and elements of FEC rate estimation are used in order to make a best estimate as to what the packet type is. Special checks for packet types FHS, ID, NULL, POLL, and HV1 are performed as these packets have fixed or no payloads. The remaining candidates are then sorted based on assessments that the modulation is GFSK, the packet length, and the estimated FEC rate. Packet type FHS is prioritized along with other packet types which have a CRC and a payload header. For those packet types with a payload header, or for a packet type which has a fixed payload length, for each de-whitening candidate, the expected CRC location is computed, with and without a potential MIC (associated with encryption), and a CRC check is performed of the de-whitened PDU. For variable-length packet types with a CRC but no payload header, several estimations of the CRC location are computed, based on the estimated packet length, and the CRC is computed for each de-whitening candidate and potential CRC location. Thus, in some embodiments, a CRC is performed on a CRC code in each candidate UAP of an information field in the subset until a CRC code passes the CRC. Once a CRC passes, the packet processing is marked as complete, and a single LAP, UAP, and de-whitened PDU are delivered. If, for a given packet type candidate, a CRC does not pass, all potential UAPs, and de-whitening seeds associated with the candidate packet type, along with the pointer to the decoded data for the FEC rate associated with the candidate packet type, are stored for potential delivery.
The details of a method for forming the list of candidate packet types are disclosed.
First an uncertainty-factor ΔL for the packet length estimator {circumflex over (L)}, as described in equations (4) to (11) is defined, which allows for errors in the packet length estimate, {circumflex over (L)}. A value of ΔL=4 has been shown to provide good results in practice and may be used in some embodiments.
Steps 1714 and 1715 may be followed by step 1716 where the value of SNR2, as estimated using equation (21), is examined as a signal qualifier measured over the payload portion of the burst, to check if it exceeds a pre-determined threshold. The pre-determined threshold may be set, for example, to 8.0. If at step 1716 the signal qualifier, SNR2, measured over the payload portion of the burst, does not exceed the pre-determined threshold, then the FEC rate estimate is set to be 0, or is undetermined, in step 1722. If at step 1716 the signal qualifier, SNR2, measured over the payload portion of the burst, does exceed the pre-determined threshold, then step 1716 may be followed by step 1717 where the number of rate ⅔ codewords n are checked as described in equation (26) for FEC rate ⅔. If the number of codewords is greater or equal to 12, as discussed in
As shown in
If at step 1739 the signal qualifier, SNR2, does not exceed the pre-determined threshold, then this is noted in step 1740. Otherwise, in step 1741 it is noted that the signal qualifier, SNR2, does exceed the pre-determined threshold. Steps 1740 and 1741 may be followed by step 1742 where the packet length estimate L is checked against the expression |{circumflex over (L)}−366|≤ΔL. If the result of step 1742 is true, then step 1742 may be followed by step 1743 where FHS is used to initialize a list of candidate packet types, and step 1743 may be followed by step 1744. If the FEC was classified as rate ⅓ in step 1714, then step 1744 may be followed by step 1745. Step 1744 may be followed by step 1745 where the result of the check in step 1739 on signal qualifier, SNR2, is checked. If the signal qualifier, SNR2, did exceed the pre-determined threshold, as noted in step 1741, then step 1745 may be followed by step 1746 which collects the packet type HV1, and the UAPs corresponding to PHTF 0101, for, possibly, later delivery to the upper layers. Step 1746 may be followed by step 1750 (
An example method to estimate the user payload size is disclosed below.
For candidate packet types which carry a payload header, a first set of “estimates” may be formed for the number of information bits in the packet, which includes the payload header, user payload, and CRC. Using the four de-whitening seeds which produce the PHTF associated with the given candidate, the user payload lengths may be calculated from the de-whitened payload headers, where said user payload lengths supersede any information provided by the packet length estimate. Note that any de-whitened user payload length, which, for a given candidate packet type, is outside of the range specified for the candidate packet type, will result in that seed being discarded from the list of candidate seeds. For a given, valid user payload length mu, in bytes, the CRC starting location, relative to the first decoded data (i.e., non-voice) bit, is
n
O,CRC=8·(mh+mu)
where mh is the number of payload header bytes associated with the candidate packet type. If the candidate packet type allows for AES-CCM type Encryption, a second possible CRC starting position, appearing, for example, 32 bits later, is associated with the given de-whitening seed. Note that, for candidate packet types which carry both a payload header and a CRC, a given de-whitening seed may produce 0, 1, or 2 valid CRC starting positions, where 2 positions may occur for the case of candidate packet types which allow for AES-CCM type Encryption.
The second estimate for the user payload length, mu,0, in bytes, is
where: no is the number of overhead bits, including Access Code, Packet Header, and
If the FEC rate, r, is ⅔, as per column 1870 in
:{max(mu,0−2,mu,min) . . . min(mu,0+2,mu,max)} (28)
In general, set includes 5 values,
(mu,0−2),(mu,0−1),(mu,0),(mu,0+1),(mu,0+2)
An improved user payload length for packets with rate ⅔ FEC coding may then be expressed
m′
u,0=|(n0+15·┘8(m+m0)/10┐−{circumflex over (L)})| (29)
The final set of user payload length estimates , may then be formed, which includes ±one byte of additional uncertainty
:{max(m′u,0−1,mu,min) . . . min(m′u,0+1,mu,max)} (30)
resulting in the following second set of estimates for the number of data information bits, ninfo,2 (m), which includes the user payload plus CRC and payload header in the packet,
n
info,2(m)=8·(m0+m) for all m∈. (31)
The corresponding CRC starting position, relative to the first decoded data (i.e., non-voice) bit, is
n
0,CRC(m)=ninfo,2(m)−16 for all m∈ (32)
A list of de-whitening seed/CRC location pairs may then be formed, where, for candidate packet types with a fixed length, each of the 4 de-whitening seeds, matched to the candidate packet type, is paired with a single, fixed CRC position. For variable-length, candidate packet types which carry a payload header and a CRC, each of the 4 de-whitening seeds is paired with 0, 1, or 2 CRC positions, as described above. For variable-length, candidate packet types which have a CRC but no payload header, each of the 4 de-whitening seeds is paired with the CRC positions n0,CRC(m) for all m∈, as described above.
A more complete understanding of the user payload estimation, and the attendant advantages and features thereof, will be more readily understood with reference to the following example.
Assume that the packet type is EV4. From
From column 1830 no=126 bits
From column 1840 mo=2 bytes
From Column 1850 mu,min=1 bytes
From Column 1860 mu,max=120 bytes
From Column 1870 r=⅔
Assume that the number of data bits in the payload is 600, or 75 bytes. Hence the number of information bits, comprising the CRC and payload, is 616 bits (note that packet type EV4 does not include a payload header). The true packet duration is 1054 μs but assume, for this example, that the result of the estimated packet length, {circumflex over (L)}, as per equation (8) is 1059 μs. The initial estimate for the user payload length, mu,0, in bytes, is
Applying expression (29) the results are,
Expression (29) therefore will return m=75, the minimum result, hence the updated value for mu,0=75 bytes, which is correct for this example. Applying equations (30) and (31) result in the estimate for the number of information bits, ninfo,2(m), comprising the CRC plus payload, as
n
info,2(m)=8*(1+75)±1=616±1
An example method for checking the CRC is disclosed below.
numBytesPDU=ceiling[(nv+no,crc+15)/8] (33)
If the check at step 2105 is that the packet type does not include a CRC, then step 2105 may be followed by step 2112. If the check at step 2108 is that the CRC check does not pass, then step 2108 may be followed by step 2110. If all possible CRCs have been checked, then step 2110 may be followed by step 2111 where a check is made to see if there is another seed to be examined. If all the seeds and all the possible CRCs have been examined, then step 2111 may be followed by step 2112 where the signal qualifier, SNR2, threshold check as noted in step 1741 is checked. If, in step 2112, the signal qualifier, SNR2, did exceed the pre-determined threshold as noted in step 1741, then step 2112 may be followed by step 2113. If, in step 2112, the signal qualifier, SNR2, did not exceed the pre-determined threshold as noted in step 1740, then step 2112 may be followed by step 2114 where it is checked if the packet has been marked as, potentially, NULL or POLL in step 1735 of
Step 2120 checks if the packet type supports encryption, as per column 1930 in
maxNum=(nv/8)+mo+mu,max)
In summary, the process described in
In some embodiments, the wireless receiver 2420 includes an RF front end 2430, and processing circuitry 2440. The RF front end 2430 may perform the usual functions of an RF receiver front end such as low noise amplification, filtering and frequency down conversion so as to condition the received signal suitable for the processing in the processing circuitry 2440. In some embodiments the processing circuitry 2440 includes a processor 2450 and a memory module 2460. In some embodiments the processor 2450 includes a GFSK Processing unit 2451, an EDR Processing unit 2452 and a general purpose processing unit 2453. The GFSK Processing unit 2451 and/or the EDR Processing unit 2452 may be processors with separate software stored in a memory such as the memory module 2560, or may be processors with embedded software such as an FPGA, ASIC, etc. In some embodiments, the GFSK Processing unit 2451 and/or the EDR Processing unit 2452 may be software that is executed by the general purpose processing unit 2453. In some embodiments, the GFSK Processing unit 2451 and/or the EDR Processing unit 2452 may be implemented by or as a part of the processing circuitry 2440. The processor 2450 may also provide general purpose processing unit 2453, and the processing circuitry 2440 may also include a memory module 2560 that may be configured to perform the packet processing procedures of this disclosure, for example, as described in
The processing circuitry 2440 may be configured to control any of the methods and/or processes described herein and/or to cause such methods, and/or processes to be performed, e.g., by the wireless receiver 2420. Processor 2450 corresponds to one or more processors 2450 for performing the wireless receiver 2420 functions described herein. The memory module 2460 is configured to store data, programmatic software code and/or other information described herein. In some embodiments, the software may include instructions that, when executed by the processing circuitry 2440, causes the processing circuitry 2440 to perform the processes described herein with respect to the wireless receiver 2420 and processor 2450.
In addition to or instead of a processor such, as a central processing unit, and memory, the processing circuitry 2440 may comprise integrated circuitry for processing and/or control, e.g., one or more processors and/or processor cores and/or FPGAs (Field Programmable Gate Array) and/or ASICs (Application Specific Integrated Circuitry) configured to execute programmatic software instructions. The processor 2450 may be configured to access (e.g., write to and/or read from) the memory module 2460, which may comprise any kind of volatile and/or nonvolatile memory, e.g., cache and/or buffer memory and/or RAM (Random Access Memory) and/or ROM (Read-Only Memory) and/or optical memory and/or EPROM (Erasable Programmable Read-Only Memory). In some embodiments, the receiver 2420 includes the processing circuitry 2440 configured to detect a packet using blind LAP detection, the detecting including providing symbol timing estimation and frequency and DC offset correction. The processing circuitry 2440 is further configured to estimate a duration of a payload of the packet and decode a payload of the packet over the estimated duration according to each of a plurality of forward error correction (FEC) coding rates to produce a packet header. The processing circuitry 2440 is further configured to: for each of a plurality of de-whitening seeds, perform de-whitening, extraction and reverse decoding on the packet header to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The processing circuitry 2440 is further configured to obtain a subset of the candidate UAPs, each candidate UAP having a corresponding CRC code. The processing circuitry 2440 is further configured to form an ordered list of candidate packet types based at least in part on the estimated duration and perform a cyclic redundancy check (CRC) on the CRC code in each candidate UAP corresponding to a candidate packet type in the ordered list until a CRC code passes the CRC. The processing circuitry 2440 is also configured to select a UAP having the CRC code that passes the CRC, and return a packet data unit (PDU) corresponding to the selected UAP.
According to this aspect, in some embodiments, the blind LAP detection, payload duration estimation, and payload decoding is aided by collision detection. In some embodiments, estimating the payload duration is based at least in part on: calculating a first estimate based on a comparison of a look-ahead maximum energy and a running average of received energy; and calculating a second estimate based on subtraction of a first symbol and a factor accounting for a ramp-down of a power amplifier. In some embodiments, the processing circuitry 2440 is further configured to: estimate a modulation index based at least in part on averaging deviations over the packet header; and calculate a signal to noise ratio for the packet header and for the payload of the packet. In some embodiments, the decoding includes classifying an FEC rate as one of ⅓ and ⅔ based on a measured rate of zero syndrome occurrences. In some embodiments, the processing circuitry 2440 is further configured to create a table of de-whitening seeds, where for each de-whitening seed there is a corresponding reverse decoded UAP and a packet header type field (PHTF) in the table. In some embodiments, forming the ordered list of candidate packet types comprises: estimating a packet type based at least in part on packet length, signal to noise ratio (SNR), and elements of FEC rate estimate; performing a check for packet types based on the estimate; and sorting a remaining set of candidate packets based at least in part on whether modulation is Gaussian frequency shift keying (GFSK), and based at least in part on packet length estimate and estimated FEC rate. In some embodiments, the processing circuitry 2440 is further configured to: for packet types having one of a payload header and a fixed payload length, and for each de-whitening candidate, compute an expected CRC location and perform a CRC of the PDU based on the computed expected CRC location. For variable length packet types with a CRC code but no payload header, in some embodiments, the processing circuitry 2440 is further configured to compute a plurality estimations of a CRC location based on an estimated payload duration; and perform a CRC for each de-whitening candidate and potential CRC location. In some embodiments, the processing circuitry 2440 is further configured to, when a packet type has a CRC code, perform a CRC and when the CRC passes, the processing circuitry 2440 is configured to de-whiten the packet using a seed established for the packet type, compute a PDU size based upon a position of the CRC code, and estimate an encryption type. In some embodiments, the processing circuitry 2440 is further configured to, when all seeds have been checked and no valid CRC is found, return packet information.
In some embodiments, the processing circuitry is configured to perform blind decoding of data packets, such as by general purpose processing unit 2453. In some embodiments, the processing circuitry 2440 is configured to determine a lower address part (LAP) of a packet by comparing a portion of the packet to at least one synchronization word. The processing circuitry 2440 is further configured to decode a portion of the packet using each of a plurality of de-whitening seeds to produce a plurality of information fields, one information field for each de-whitening seed, each information field including a candidate upper address part (UAP). The processing circuitry 2440 is further configured to determine a subset of the plurality of information fields, each information field in the subset having a different candidate UAP, each candidate UAP having a corresponding CRC code. The processing circuitry 2440 is further configured to perform a cyclic redundancy check (CRC) on the CRC code in each candidate UAP of an information field in the subset, until a CRC code passes the CRC, select a UAP having the CRC code that passes the CRC, and select a packet data unit (PDU) corresponding to the selected UAP.
In some embodiments, the processing circuitry 2440 is further configured to determine a location of the CRC code within a candidate PDU based on a packet type of the candidate PDU, the candidate PDU corresponding to one of the different UAPs. In some embodiments, the processing circuitry 2440 is further configured to select the packet type from a list of packet types based at least in part on a comparison of a measurement of a signal qualifier over a payload portion of the decoded PDU to a first threshold. In some embodiments, the processing circuitry 2440 is further configured to obtain the list of packet types based at least in part on a length of the decoded PDU. In some embodiments, the sequence of bits is 64 bits long; there are 64 possible de-whitening seeds, and the first set of candidate PDUs has 16 candidate PDUs, each having a 4-bit packet header type field (PHTF) and a corresponding 8-bit UAP occurring in the first set four times. In some embodiments, the decoding includes reverse header error check, HEC, decoding. In some embodiments, the decoding includes application of a Gaussian frequency shift keyed (GFSK) access code serving as a synchronization word for the decoded PDU to the packet. In some embodiments, the GFSK access code is determined by comparing a synchronization word from the LAP to each one of a plurality of sample synchronization words. In some embodiments, the processing circuitry 2440 is further configured to estimate a length of the packet based at least in part on a running average of received energy over a specifiable number of symbols of the packet.
According to an embodiment of the disclosure, a computer/display 2470 may be connected wirelessly or via a physical communications connection to the wireless receiver 2420. In some embodiments, the computer/display 2470 may be a computer system with an associated display module such as a laptop or tablet computer or may be a computer system with a separate display monitor. The computer/display 2470 may be used as an operator interface to the wireless receiver 2420 and to display the results of the Bluetooth blind decoding. The calculations described in this disclosure may be performed using software on the processor 2450 and memory module 2460 combination or, indeed on the computer/display 2470. In some embodiments described herein, the term “coupled,” “connected,” and the like, may be used herein to indicate a connection, although not necessarily directly, and may include wired and/or wireless connections. Also, it is contemplated that system 2400 can be provided in a single physical housing or in separate physical housings.
An EDR-enabled detector 2544 correlates against the known EDR sync word, and, if the EDR sync word is detected, will produce a stream of EDR bits 2548 that may override the GFSK bit stream 2516. Conversely, the GFSK Detector block 2515 produces a pair of SNR qualifiers 2517 for the Packet Header and payload portions of the burst, respectively, (SNR1 and SNR2 as described in equations (20) and (21)) which may be used to classify the packet as GFSK, and also, to qualify Packet Headers and PDUs which do not have the benefit of a valid CRC. Additionally, the GFSK path may also include blocks 2520, 2525, and 2530 which cover the three possible FEC coding rates; 1, ⅔ or ⅓ with block 2530 providing an estimate of the FEC coding rate, as determined using equations (22) to (26) and
The packet processing unit 2570 that contains the processes of rate decoding and packet identification, blocks 2520, 2523, 2525 and 2560 may be performed via processing circuitry such as a processor and a memory, ASIC, FPGA, etc., that execute programmatic software. In some embodiments, the packet processing unit 2570 is part of the wireless receiver 2420. In other embodiments, the packet processing unit is implemented in a device other than the wireless receiver 2420.
In some embodiments, the process further includes determining via the processing circuitry 2440, a location of the CRC code within a candidate PDU based on a packet type of the candidate PDU, the candidate PDU corresponding to one of the different candidate UAPs. In some embodiments, the packet type includes packets having at least one of a payload header, a fixed payload length, and a variable length. In some embodiments, the process further includes selecting via the processing circuitry 2440, the packet type from a list of packet types based at least in part on a comparison of a measurement of a signal qualifier over a payload portion of the decoded PDU to a first threshold. In some embodiments, obtaining the list of packet types based at least in part on a length of the decoded PDU. In some embodiments, the sequence of bits is 64 bits long, there are 64 possible de-whitening seeds; and the first set of candidate PDUs has 16 candidate PDUs, each having a 4-bit packet header type field (PHTF) and a corresponding 8-bit UAP occurring in the first set four times. In some embodiments, the decoding includes reverse header error check, HEC, decoding. In some embodiments, the decoding includes application of a Gaussian frequency shift keyed (GFSK) access code serving as a synchronization word for the decoded PDU to the packet. In some embodiments, the GFSK access code is determined by comparing a synchronization word from the LAP to each one of a plurality of sample synchronization words. In some embodiments, the process also includes estimating a length of the packet based at least in part on a running average of received energy over a specifiable number of symbols of the packet.
In some embodiments, the blind LAP detection, payload duration estimation, and payload decoding is aided by collision detection. In some embodiments, estimating the payload duration is based at least in part on calculating a first estimate based on a comparison of a look-ahead maximum energy and a running average of received energy, and calculating a second estimate based on subtraction of a first symbol and a factor accounting for a ramp-down of a power amplifier. In some embodiments, the method further includes estimating a modulation index based at least in part on averaging deviations over the packet header, and calculating a signal to noise ratio for the packet header and for the payload of the packet. In some embodiments, the decoding includes classifying an FEC rate as one of 1, ⅓ and ⅔ based on a measured rate of zero syndrome occurrences. In some embodiments, the method further includes creating a table of de-whitening seeds, where for each de-whitening seed there is a corresponding reverse decoded UAP and a packet header type field (PHTF) in the table. In some embodiments, forming the ordered list of candidate packet types includes estimating a packet type based at least in part on packet length, signal to noise ratio (SNR), and elements of FEC rate estimate. In some embodiments the method includes performing a check for packet types based on the estimate, and sorting a remaining set of candidate packets based at least in part on whether modulation is Gaussian frequency shift keying (GFSK), and based at least in part on packet length estimate and estimated FEC rate. In some embodiments, the method further includes for packet types having one of a payload header and a fixed payload length, and for each de-whitening candidate: computing an expected CRC location and performing a CRC of the PDU based on the computed expected CRC location. For variable length packet types with a CRC code but no payload header some embodiments include computing a plurality of estimations of a CRC location based on an estimated payload duration, and performing a CRC for each de-whitening candidate and potential CRC location. In some embodiments, the method also includes, when a packet type has a CRC code, performing a CRC and when the CRC passes, de-whitening the packet using a seed established for the packet type, computing a PDU size based upon a position of the CRC code, and estimating an encryption type. In some embodiments, the method includes, when all seeds have been checked and no valid CRC is found, returning packet information.
Current and prior art comprises either a monitoring device listening in on a single channel or, in the case of a broadband packet analyzer requires up-front information to monitor the exchange of packets on a single piconet. Some embodiments allow in-parallel operation of the survey or monitoring of many piconets simultaneously. In-parallel operation allows independence from the respective piconets' spread spectrum hop sequencing and hence many piconets can be tracked simultaneously. Some embodiments enable the monitoring receiver to be able to listen to everything that is received at the antenna and process all of it in real-time using just one RF path.
The embodiment is described herein with reference to flowchart illustrations. It will be understood that each block of the flowchart illustrations can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer (to thereby form a special purpose computer), special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart step or steps.
These computer program instructions may also be stored in a computer readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer readable memory produce an article of manufacture including instruction means which implement the function/act specified in the flowchart step or steps.
The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions/acts specified in the flowchart step or steps.
It is to be understood that the functions/acts noted in the steps may occur out of the order noted in the operational illustrations. For example, two steps shown in succession may in fact be executed substantially concurrently or the steps may sometimes be executed in the reverse order, depending upon the functionality/acts involved. Although some of the diagrams include arrows on communication paths to show a primary direction of communication, it is to be understood that communication may occur in the opposite direction to the depicted arrows.
Computer program code for carrying out operations of the concepts described herein may be written in an object oriented programming language such as Java® or C++. However, the computer program code for carrying out operations of the disclosure may also be written in conventional procedural programming languages, such as the “C” programming language. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer. In the latter scenario, the remote computer may be connected to the user's computer through a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).
While the above description contains many specifics, these should not be construed as limitations on the scope, but rather as an exemplification of several embodiments thereof. Many other variants are possible including, for examples: the details of the LD discriminator, the number of symbols used in the averaging and look ahead maximum calculation used in the packet length estimation, the threshold level and number of symbols used in the FEC rate classification, the ordering of the whitening seed and PHTF lists, the SNR thresholds used for the determination of GFSK and packet type selection, the allowable errors used in the estimated packet length and payload sizes. Accordingly, the scope should be determined not by the embodiments illustrated.
It will be appreciated by persons skilled in the art that the present embodiments are not limited to what has been particularly shown and described herein above. A variety of modifications and variations are possible in light of the above teachings without departing from the scope of the following claims.
This application claims priority to U.S. Provisional Application No. 62/741,863, filed Oct. 5, 2018, entitled “BLIND DECODING OF DATA PACKETS”, the entirety of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62741863 | Oct 2018 | US |