SDRAngel  4.11.5
Developer docs for <a href="https://github.com/f4exb/sdrangel">SDRangel<\a>, an Open Source Qt5 / OpenGL 3.0+ SDR and signal analyzer frontend to various hardware.
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
leansdr::deconvol_sync< Tbyte, BYTE_ERASED > Struct Template Reference

#include <dvb.h>

+ Inheritance diagram for leansdr::deconvol_sync< Tbyte, BYTE_ERASED >:
+ Collaboration diagram for leansdr::deconvol_sync< Tbyte, BYTE_ERASED >:

Classes

struct  sync_t
 

Public Types

typedef uint64_t signal_t
 
typedef uint64_t iq_t
 

Public Member Functions

 deconvol_sync (scheduler *sch, pipebuf< eucl_ss > &_in, pipebuf< Tbyte > &_out, uint32_t gX, uint32_t gY, uint32_t pX, uint32_t pY)
 
iq_t convolve (signal_t s)
 
void run ()
 
void next_sync ()
 
- Public Member Functions inherited from leansdr::runnable
 runnable (scheduler *_sch, const char *name)
 
- Public Member Functions inherited from leansdr::runnable_common
 runnable_common (const char *_name)
 
virtual ~runnable_common ()
 
virtual void shutdown ()
 

Static Public Member Functions

static int log2 (uint64_t x)
 

Public Attributes

bool fastlock
 
- Public Attributes inherited from leansdr::runnable_common
const char * name
 

Private Member Functions

void solve_rec (iq_t prefix, unsigned int nprefix, signal_t exp, iq_t *best)
 
void inverse_convolution ()
 
void init_syncs ()
 
Tbyte readbyte (sync_t *s, eucl_ss *&p)
 
unsigned long readerrors (sync_t *s, eucl_ss *&p)
 
void run_decoding ()
 

Private Attributes

iq_t response [maxsbits]
 
struct leansdr::deconvol_sync::sync_t syncs [NSYNCS]
 
pipereader< eucl_ssin
 
pipewriter< Tbyte > out
 
int nG
 
uint32_tconv
 
uint32_tpunct
 
int punctperiod
 
int punctweight
 
iq_tdeconv
 
iq_tdeconv2
 
sync_tlocked
 
int skip
 

Static Private Attributes

static const int maxsbits = 64
 
static const int traceback = 64
 
static const int LATENCY = 0
 
static const int NSYNCS = 4
 

Additional Inherited Members

- Protected Attributes inherited from leansdr::runnable
schedulersch
 

Detailed Description

template<typename Tbyte, Tbyte BYTE_ERASED>
struct leansdr::deconvol_sync< Tbyte, BYTE_ERASED >

Definition at line 115 of file dvb.h.

Member Typedef Documentation

◆ iq_t

template<typename Tbyte, Tbyte BYTE_ERASED>
typedef uint64_t leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::iq_t

Definition at line 158 of file dvb.h.

◆ signal_t

template<typename Tbyte, Tbyte BYTE_ERASED>
typedef uint64_t leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::signal_t

Definition at line 157 of file dvb.h.

Constructor & Destructor Documentation

◆ deconvol_sync()

template<typename Tbyte, Tbyte BYTE_ERASED>
leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::deconvol_sync ( scheduler sch,
pipebuf< eucl_ss > &  _in,
pipebuf< Tbyte > &  _out,
uint32_t  gX,
uint32_t  gY,
uint32_t  pX,
uint32_t  pY 
)
inline

Definition at line 117 of file dvb.h.

123  : runnable(sch, "deconvol_sync"),
124  fastlock(false),
125  in(_in),
126  out(_out, SIZE_RSPACKET),
127  skip(0)
128  {
129  conv = new uint32_t[2];
130  conv[0] = gX;
131  conv[1] = gY;
132  nG = 2;
133  punct = new uint32_t[2];
134  punct[0] = pX;
135  punct[1] = pY;
136  punctperiod = 0;
137  punctweight = 0;
138 
139  for (int i = 0; i < 2; ++i)
140  {
141  int nbits = log2(punct[i]) + 1;
142  if (nbits > punctperiod)
143  punctperiod = nbits;
145  }
146 
147  if (sch->verbose)
148  fprintf(stderr, "puncturing %d/%d\n", punctperiod, punctweight);
149 
150  deconv = new iq_t[punctperiod];
151  deconv2 = new iq_t[punctperiod];
153  init_syncs();
154  locked = &syncs[0];
155  }
uint32_t * punct
Definition: dvb.h:578
uint32_t * conv
Definition: dvb.h:577
void inverse_convolution()
Definition: dvb.h:252
pipewriter< Tbyte > out
Definition: dvb.h:574
pipereader< eucl_ss > in
Definition: dvb.h:573
runnable(scheduler *_sch, const char *name)
Definition: framework.h:193
int hamming_weight(uint8_t x)
Definition: math.cpp:6
unsigned int uint32_t
Definition: rtptypes_win.h:46
struct leansdr::deconvol_sync::sync_t syncs[NSYNCS]
static int log2(uint64_t x)
Definition: dvb.h:160
int32_t i
Definition: decimators.h:244
sync_t * locked
Definition: dvb.h:582
void init_syncs()
Definition: dvb.h:366
scheduler * sch
Definition: framework.h:199
uint64_t iq_t
Definition: dvb.h:158

Member Function Documentation

◆ convolve()

template<typename Tbyte, Tbyte BYTE_ERASED>
iq_t leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::convolve ( signal_t  s)
inline

Definition at line 168 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::inverse_convolution().

169  {
170  int sbits = log2(s) + 1;
171  iq_t iq = 0;
172  unsigned char state = 0;
173 
174  for (int b = sbits - 1; b >= 0; --b)
175  { // Feed into convolver, MSB first
176  unsigned char bit = (s >> b) & 1;
177  state = (state >> 1) | (bit << 6); // Shift register
178 
179  for (int j = 0; j < nG; ++j)
180  {
181  unsigned char xy = parity(state & conv[j]); // Taps
182  if (punct[j] & (1 << (b % punctperiod)))
183  iq = (iq << 1) | xy;
184  }
185  }
186 
187  return iq;
188  }
uint32_t * punct
Definition: dvb.h:578
uint32_t * conv
Definition: dvb.h:577
static int log2(uint64_t x)
Definition: dvb.h:160
unsigned char parity(uint8_t x)
Definition: math.cpp:27
uint64_t iq_t
Definition: dvb.h:158
+ Here is the caller graph for this function:

◆ init_syncs()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::init_syncs ( )
inlineprivate

Definition at line 366 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::deconvol_sync(), and leansdr::dvb_deconvol_sync< Tin >::dvb_deconvol_sync().

367  {
368  // EN 300 421, section 4.5, Figure 5 QPSK constellation
369  // Four rotations * two conjugations.
370  // 180° rotation is detected as polarity inversion in mpeg_sync.
371  for (int sync_id = 0; sync_id < NSYNCS; ++sync_id)
372  {
373  for (int re_pos = 0; re_pos <= 1; ++re_pos)
374  {
375  for (int im_pos = 0; im_pos <= 1; ++im_pos)
376  {
377  int re_neg = !re_pos; //int im_neg = !im_pos;
378  int I, Q;
379  switch (sync_id)
380  {
381  case 0: // Direct 0°
382  I = re_pos ? 0 : 1;
383  Q = im_pos ? 0 : 1;
384  break;
385  case 1: // Direct 90°
386  I = im_pos ? 0 : 1;
387  Q = re_neg ? 0 : 1;
388  break;
389  case 2: // Conj 0°
390  I = re_pos ? 0 : 1;
391  Q = im_pos ? 1 : 0;
392  break;
393  case 3: // Conj 90°
394  I = im_pos ? 1 : 0;
395  Q = re_neg ? 0 : 1;
396  break;
397 #if 0
398  case 4: // Direct 180°
399  I = re_neg ? 0 : 1;
400  Q = im_neg ? 0 : 1;
401  break;
402  case 5:// Direct 270°
403  I = im_neg ? 0 : 1;
404  Q = re_pos ? 0 : 1;
405  break;
406  case 6:// Conj 180°
407  I = re_neg ? 0 : 1;
408  Q = im_neg ? 1 : 0;
409  break;
410  case 7:// Conj 270°
411  I = im_neg ? 1 : 0;
412  Q = re_pos ? 0 : 1;
413  break;
414 #endif
415  }
416 
417  syncs[sync_id].lut[re_pos][im_pos] = (I << 1) | Q;
418  }
419  }
420 
421  syncs[sync_id].n_in = 0;
422  syncs[sync_id].n_out = 0;
423  syncs[sync_id].n_in2 = 0;
424  syncs[sync_id].n_out2 = 0;
425  }
426  }
static const int NSYNCS
Definition: dvb.h:352
struct leansdr::deconvol_sync::sync_t syncs[NSYNCS]
+ Here is the caller graph for this function:

◆ inverse_convolution()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::inverse_convolution ( )
inlineprivate

Definition at line 252 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::deconvol_sync().

253  {
254  for (int sbit = 0; sbit < maxsbits; ++sbit)
255  {
256  response[sbit] = convolve((iq_t)1 << sbit);
257  //fprintf(stderr, "response %d = %x\n", sbit, response[sbit]);
258  }
259  for (int b = 0; b < punctperiod; ++b)
260  {
261  deconv[b] = -(iq_t)1;
262  solve_rec(0, 0, 1 << (LATENCY + b), &deconv[b]);
263  }
264 
265  // Alternate polynomials for fastlock
266  for (int b = 0; b < punctperiod; ++b)
267  {
268  uint64_t d = deconv[b], d2 = d;
269  // 1/2
270  if (d == 0x00000000000003baLL)
271  d2 = 0x0000000000038ccaLL;
272  // 2/3
273  if (d == 0x0000000000000f29LL)
274  d2 = 0x000000003c569329LL;
275  if (d == 0x000000000003c552LL)
276  d2 = 0x00000000001dee1cLL;
277  if (d == 0x0000000000007948LL)
278  d2 = 0x00000001e2b49948LL;
279  if (d == 0x00000000000001deLL)
280  d2 = 0x00000000001e2a90LL;
281  // 3/4
282  if (d == 0x000000000000f247LL)
283  d2 = 0x000000000fd6383bLL;
284  if (d == 0x00000000000fd9eeLL)
285  d2 = 0x000000000fd91392LL;
286  if (d == 0x0000000000f248d8LL)
287  d2 = 0x00000000fd9eef18LL;
288  // 5/6
289  if (d == 0x0000000000f5727fLL)
290  d2 = 0x000003d5c909758fLL;
291  if (d == 0x000000003d5c90aaLL)
292  d2 = 0x0f5727f0229c90aaLL;
293  if (d == 0x000000003daa371cLL)
294  d2 = 0x000003d5f45630ecLL;
295  if (d == 0x0000000f5727ff48LL)
296  d2 = 0x0000f57d28260348LL;
297  if (d == 0x0000000f57d28260LL)
298  d2 = 0xf5727ff48128260LL;
299  // 7/8
300  if (d == 0x0000fbeac76c454fLL)
301  d2 = 0x00fb11d6ba045a8fLL;
302  if (d == 0x00000000fb11d6baLL)
303  d2 = 0xfbea3c7d930e16baLL;
304  if (d == 0x0000fb112d5038dcLL)
305  d2 = 0x00fb112d5038271cLL;
306  if (d == 0x000000fbea3c7d68LL)
307  d2 = 0x00fbeac7975462a8LL;
308  if (d == 0x00000000fb112d50LL)
309  d2 = 0x00fbea3c86793290LL;
310  if (d == 0x0000fb112dabd2e0LL)
311  d2 = 0x00fb112d50c3cd20LL;
312  if (d == 0x00000000fb11d640LL)
313  d2 = 0x00fbea3c8679c980LL;
314  if (d2 == d)
315  fail("Alt polynomial not provided");
316  deconv2[b] = d2;
317  }
318 
319  if (sch->debug)
320  {
321  for (int b = 0; b < punctperiod; ++b)
322  {
323  fprintf(stderr, "deconv[%d]=0x%016llx %d taps / %d bits\n",
324  b, (unsigned long long)deconv[b], hamming_weight(deconv[b]), log2(deconv[b]) + 1);
325  }
326  }
327 
328  // Sanity check
329  for (int b = 0; b < punctperiod; ++b)
330  {
331  for (int i = 0; i < maxsbits; ++i)
332  {
333  iq_t iq = convolve((iq_t)1 << (LATENCY + i));
334  int expect = (b == i) ? 1 : 0;
335  int d = parity(iq & deconv[b]);
336  if (d != expect)
337  fail("Failed to inverse convolutional coding");
338  int d2 = parity(iq & deconv2[b]);
339  if (d2 != expect)
340  fail("Failed to inverse convolutional coding (alt)");
341  }
342 
343  if (traceback > sizeof(iq_t) * 8)
344  fail("Bug: traceback exceeds register size");
345  if (log2(deconv[b]) + 1 > traceback)
346  fail("traceback insufficient for deconvolution");
347  if (log2(deconv2[b]) + 1 > traceback)
348  fail("traceback insufficient for deconvolution (alt)");
349  }
350  }
iq_t response[maxsbits]
Definition: dvb.h:214
static const int traceback
Definition: dvb.h:217
static const int maxsbits
Definition: dvb.h:213
int hamming_weight(uint8_t x)
Definition: math.cpp:6
void solve_rec(iq_t prefix, unsigned int nprefix, signal_t exp, iq_t *best)
Definition: dvb.h:219
void fail(const char *s)
Definition: framework.cpp:11
static int log2(uint64_t x)
Definition: dvb.h:160
int32_t i
Definition: decimators.h:244
static const int LATENCY
Definition: dvb.h:250
unsigned char parity(uint8_t x)
Definition: math.cpp:27
scheduler * sch
Definition: framework.h:199
uint64_t iq_t
Definition: dvb.h:158
unsigned __int64 uint64_t
Definition: rtptypes_win.h:48
iq_t convolve(signal_t s)
Definition: dvb.h:168
+ Here is the caller graph for this function:

◆ log2()

template<typename Tbyte, Tbyte BYTE_ERASED>
static int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::log2 ( uint64_t  x)
inlinestatic

Definition at line 160 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::convolve(), leansdr::deconvol_sync< leansdr::u8, 0 >::deconvol_sync(), and leansdr::deconvol_sync< leansdr::u8, 0 >::inverse_convolution().

161  {
162  int n = -1;
163  for (; x; ++n, x >>= 1)
164  ;
165  return n;
166  }
+ Here is the caller graph for this function:

◆ next_sync()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::next_sync ( )
inline

Definition at line 195 of file dvb.h.

Referenced by leansdr::mpeg_sync< leansdr::u8, 0 >::run_searching().

196  {
197  if (fastlock)
198  fail("Bug: next_sync() called with fastlock");
199 
200  ++locked;
201 
202  if (locked == &syncs[NSYNCS])
203  {
204  locked = &syncs[0];
205  // Try next symbol alignment (for FEC other than 1/2)
206  skip = 1;
207  }
208  }
static const int NSYNCS
Definition: dvb.h:352
struct leansdr::deconvol_sync::sync_t syncs[NSYNCS]
void fail(const char *s)
Definition: framework.cpp:11
sync_t * locked
Definition: dvb.h:582
+ Here is the caller graph for this function:

◆ readbyte()

template<typename Tbyte, Tbyte BYTE_ERASED>
Tbyte leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::readbyte ( sync_t s,
eucl_ss *&  p 
)
inlineprivate

Definition at line 435 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::run_decoding().

436  {
437  while (s->n_out < 8)
438  {
439  iq_t iq = s->in;
440 
441  while (s->n_in < traceback)
442  {
443  u8 iqbits = s->lut[(p->nearest & 2) ? 1 : 0][p->nearest & 1];
444  ++p;
445  iq = (iq << 2) | iqbits;
446  s->n_in += 2;
447  }
448 
449  s->in = iq;
450 
451  for (int b = punctperiod - 1; b >= 0; --b)
452  {
453  u8 bit = parity(iq & deconv[b]);
454  s->out = (s->out << 1) | bit;
455  }
456 
457  s->n_out += punctperiod;
458  s->n_in -= punctweight;
459  }
460 
461  Tbyte res = (s->out >> (s->n_out - 8)) & 255;
462  s->n_out -= 8;
463  return res;
464  }
static const int traceback
Definition: dvb.h:217
unsigned char u8
Definition: framework.h:453
unsigned char parity(uint8_t x)
Definition: math.cpp:27
uint64_t iq_t
Definition: dvb.h:158
+ Here is the caller graph for this function:

◆ readerrors()

template<typename Tbyte, Tbyte BYTE_ERASED>
unsigned long leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::readerrors ( sync_t s,
eucl_ss *&  p 
)
inlineprivate

Definition at line 466 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::run_decoding().

467  {
468  unsigned long res = 0;
469 
470  while (s->n_out2 < 8)
471  {
472  iq_t iq = s->in2;
473 
474  while (s->n_in2 < traceback)
475  {
476  u8 iqbits = s->lut[(p->nearest & 2) ? 1 : 0][p->nearest & 1];
477  ++p;
478  iq = (iq << 2) | iqbits;
479  s->n_in2 += 2;
480  }
481 
482  s->in2 = iq;
483 
484  for (int b = punctperiod - 1; b >= 0; --b)
485  {
486  u8 bit = parity(iq & deconv[b]);
487  u8 bit2 = parity(iq & deconv2[b]);
488  if (bit2 != bit)
489  ++res;
490  }
491 
492  s->n_out2 += punctperiod;
493  s->n_in2 -= punctweight;
494  }
495 
496  s->n_out2 -= 8;
497  return res;
498  }
static const int traceback
Definition: dvb.h:217
unsigned char u8
Definition: framework.h:453
unsigned char parity(uint8_t x)
Definition: math.cpp:27
uint64_t iq_t
Definition: dvb.h:158
+ Here is the caller graph for this function:

◆ run()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::run ( )
inlinevirtual

Reimplemented from leansdr::runnable_common.

Definition at line 190 of file dvb.h.

191  {
192  run_decoding();
193  }
void run_decoding()
Definition: dvb.h:500

◆ run_decoding()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::run_decoding ( )
inlineprivate

Definition at line 500 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::run(), and leansdr::mpeg_sync< leansdr::u8, 0 >::run().

501  {
502  in.read(skip);
503  skip = 0;
504 
505  // 8 byte margin to fill the deconvolver
506  if (in.readable() < 64)
507  return;
508 
509  int maxrd = (in.readable() - 64) / (punctweight / 2) * punctperiod / 8;
510  int maxwr = out.writable();
511  int n = (maxrd < maxwr) ? maxrd : maxwr;
512 
513  if (!n)
514  return;
515  // Require enough symbols to discriminate in fastlock mode
516  // (threshold must be less than size of rspacket)
517 
518  if (n < 32)
519  return;
520 
521  if (fastlock)
522  {
523  // Try all sync alignments
524  long errors_best = 1 << 30;
525  sync_t *best = &syncs[0];
526 
527  for (sync_t *s = syncs; s < syncs + NSYNCS; ++s)
528  {
529  eucl_ss *pin = in.rd();
530  long errors = 0;
531 
532  for (int c = n; c--;)
533  errors += readerrors(s, pin);
534 
535  if (errors < errors_best)
536  {
537  errors_best = errors;
538  best = s;
539  }
540  }
541 
542  if (best != locked)
543  {
544  // Another alignment produces fewer bit errors
545  if (sch->debug)
546  {
547  fprintf(stderr, "{%d->%d}\n", (int)(locked - syncs), (int)(best - syncs));
548  }
549 
550  locked = best;
551  }
552 
553  // If deconvolution bit error rate > 33%, try next sample alignment
554  if (errors_best > n * 8 / 3)
555  {
556  // fprintf(stderr, ">");
557  skip = 1;
558  }
559  }
560 
561  eucl_ss *pin = in.rd(), *pin0 = pin;
562  Tbyte *pout = out.wr(), *pout0 = pout;
563 
564  while (n--)
565  {
566  *pout++ = readbyte(locked, pin);
567  }
568 
569  in.read(pin - pin0);
570  out.written(pout - pout0);
571  }
static const int NSYNCS
Definition: dvb.h:352
unsigned long readerrors(sync_t *s, eucl_ss *&p)
Definition: dvb.h:466
pipewriter< Tbyte > out
Definition: dvb.h:574
pipereader< eucl_ss > in
Definition: dvb.h:573
struct leansdr::deconvol_sync::sync_t syncs[NSYNCS]
sync_t * locked
Definition: dvb.h:582
void written(unsigned long n)
Definition: framework.h:308
Tbyte readbyte(sync_t *s, eucl_ss *&p)
Definition: dvb.h:435
scheduler * sch
Definition: framework.h:199
+ Here is the caller graph for this function:

◆ solve_rec()

template<typename Tbyte, Tbyte BYTE_ERASED>
void leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::solve_rec ( iq_t  prefix,
unsigned int  nprefix,
signal_t  exp,
iq_t best 
)
inlineprivate

Definition at line 219 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::inverse_convolution(), and leansdr::deconvol_sync< leansdr::u8, 0 >::solve_rec().

220  {
221  if (prefix > *best)
222  return;
223  if (nprefix > sizeof(prefix) * 8)
224  return;
225 
226  int solved = 1;
227 
228  for (int b = 0; b < maxsbits; ++b)
229  {
230  if (parity(prefix & response[b]) != ((exp >> b) & 1))
231  {
232  // Current candidate does not solve this column.
233  if ((response[b] >> nprefix) == 0)
234  // No more bits to trace back.
235  return;
236  solved = 0;
237  }
238  }
239 
240  if (solved)
241  {
242  *best = prefix;
243  return;
244  }
245 
246  solve_rec(prefix, nprefix + 1, exp, best);
247  solve_rec(prefix | ((iq_t)1 << nprefix), nprefix + 1, exp, best);
248  }
iq_t response[maxsbits]
Definition: dvb.h:214
static const int maxsbits
Definition: dvb.h:213
void solve_rec(iq_t prefix, unsigned int nprefix, signal_t exp, iq_t *best)
Definition: dvb.h:219
Fixed< IntType, IntBits > exp(Fixed< IntType, IntBits > const &x)
Definition: fixed.h:2289
unsigned char parity(uint8_t x)
Definition: math.cpp:27
uint64_t iq_t
Definition: dvb.h:158
+ Here is the caller graph for this function:

Member Data Documentation

◆ conv

template<typename Tbyte, Tbyte BYTE_ERASED>
uint32_t* leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::conv
private

◆ deconv

template<typename Tbyte, Tbyte BYTE_ERASED>
iq_t* leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::deconv
private

◆ deconv2

template<typename Tbyte, Tbyte BYTE_ERASED>
iq_t* leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::deconv2
private

◆ fastlock

template<typename Tbyte, Tbyte BYTE_ERASED>
bool leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::fastlock

Definition at line 210 of file dvb.h.

Referenced by leansdr::deconvol_sync< leansdr::u8, 0 >::next_sync().

◆ in

template<typename Tbyte, Tbyte BYTE_ERASED>
pipereader<eucl_ss> leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::in
private

Definition at line 573 of file dvb.h.

◆ LATENCY

template<typename Tbyte, Tbyte BYTE_ERASED>
const int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::LATENCY = 0
staticprivate

Definition at line 250 of file dvb.h.

◆ locked

template<typename Tbyte, Tbyte BYTE_ERASED>
sync_t* leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::locked
private

◆ maxsbits

template<typename Tbyte, Tbyte BYTE_ERASED>
const int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::maxsbits = 64
staticprivate

◆ nG

template<typename Tbyte, Tbyte BYTE_ERASED>
int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::nG
private

◆ NSYNCS

template<typename Tbyte, Tbyte BYTE_ERASED>
const int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::NSYNCS = 4
staticprivate

◆ out

template<typename Tbyte, Tbyte BYTE_ERASED>
pipewriter<Tbyte> leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::out
private

Definition at line 574 of file dvb.h.

◆ punct

template<typename Tbyte, Tbyte BYTE_ERASED>
uint32_t* leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::punct
private

◆ punctperiod

template<typename Tbyte, Tbyte BYTE_ERASED>
int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::punctperiod
private

◆ punctweight

template<typename Tbyte, Tbyte BYTE_ERASED>
int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::punctweight
private

◆ response

template<typename Tbyte, Tbyte BYTE_ERASED>
iq_t leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::response[maxsbits]
private

Definition at line 214 of file dvb.h.

◆ skip

template<typename Tbyte, Tbyte BYTE_ERASED>
int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::skip
private

◆ syncs

template<typename Tbyte, Tbyte BYTE_ERASED>
struct leansdr::deconvol_sync::sync_t leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::syncs[NSYNCS]
private

◆ traceback

template<typename Tbyte, Tbyte BYTE_ERASED>
const int leansdr::deconvol_sync< Tbyte, BYTE_ERASED >::traceback = 64
staticprivate

Definition at line 217 of file dvb.h.


The documentation for this struct was generated from the following file: