GNU Radio C++ API Reference  g90d26cb
The Free & Open Software Radio Ecosystem
interleaver.h
Go to the documentation of this file.
1 /* -*- c++ -*- */
2 /*
3  * Copyright 2002,2012 Free Software Foundation, Inc.
4  * Copyright 2025 Marcus Müller <mmueller@gnuradio.org>
5  *
6  * This file is part of GNU Radio
7  *
8  * SPDX-License-Identifier: GPL-3.0-or-later
9  *
10  */
11 
12 #ifndef INCLUDED_TRELLIS_INTERLEAVER_H
13 #define INCLUDED_TRELLIS_INTERLEAVER_H
14 
15 #include <gnuradio/trellis/api.h>
16 #include <string>
17 #include <vector>
18 
19 namespace gr {
20 namespace trellis {
21 
22 /*!
23  * \brief INTERLEAVER class
24  * \ingroup trellis_coding_blk
25  */
27 {
28 private:
29  std::vector<int> d_interleaver_indices;
30  std::vector<int> d_deinterleaver_indices;
31 
32 public:
33  //! \brief construct empty interleaver
35  //! \brief copy constructor
37  /*!
38  * \brief construct interleaver with redundant vector length parameter
39  * \param k vector length
40  * \param interleaver index vector
41  */
42  [[deprecated("Will be removed in 3.11")]] interleaver(
43  unsigned int k, const std::vector<int>& interleaver);
44  /*!
45  * \brief construct interleaver from index vector
46  * \param interleaver index vector
47  */
48  interleaver(const std::vector<int>& interleaver);
49  /*!
50  * \brief construct interleaver from file
51  *
52  * \details
53  * File format is ASCII,
54  * <code>
55  * {number of interleaver taps}
56  * {empty line}
57  * {K space-separated list: permutation of 0 1 2 … K-1}
58  * {optional comments}
59  * </code>
60  *
61  * \param name file containing interleaver specification
62  */
63  interleaver(const char* name);
64  /*!
65  * \brief construct random interleaver
66  * \param k length
67  * \param seed seed for PRNG
68  */
69  interleaver(unsigned int k, int seed);
70 
71  //! \brief return length of interleaver
72  unsigned int k() const { return d_interleaver_indices.size(); }
73  //! \brief return interleaver index vector reference
74  const std::vector<int>& interleaver_indices() const { return d_interleaver_indices; }
75  //! \brief return deinterleaver index vector reference
76  const std::vector<int>& deinterleaver_indices() const
77  {
78  return d_deinterleaver_indices;
79  }
80 
81  // TODO in GR 3.11, remove K, INTER and DEINTER
82  //! \brief return length of interleaver
83  [[deprecated("Will be removed in 3.11")]] unsigned int K() const
84  {
85  return d_interleaver_indices.size();
86  }
87  //! \brief return interleaver index vector reference
88  [[deprecated("Will be removed in 3.11")]] const std::vector<int>& INTER() const
89  {
90  return d_interleaver_indices;
91  }
92  //! \brief return deinterleaver index vector reference
93  [[deprecated("Will be removed in 3.11")]] const std::vector<int>& DEINTER() const
94  {
95  return d_deinterleaver_indices;
96  }
97 
98 
99  /*!
100  * \brief write interleaver index vector to text file
101  * \see gr::trellis::interleaver::interleaver(const char* name)
102  */
103  void write_interleaver_txt(std::string filename);
104 };
105 
106 } /* namespace trellis */
107 } /* namespace gr */
108 
109 #endif /* INCLUDED_TRELLIS_INTERLEAVER_H */
INTERLEAVER class.
Definition: interleaver.h:27
interleaver(const interleaver &interleaver)
copy constructor
void write_interleaver_txt(std::string filename)
write interleaver index vector to text file
const std::vector< int > & INTER() const
return interleaver index vector reference
Definition: interleaver.h:88
const std::vector< int > & DEINTER() const
return deinterleaver index vector reference
Definition: interleaver.h:93
unsigned int K() const
return length of interleaver
Definition: interleaver.h:83
const std::vector< int > & interleaver_indices() const
return interleaver index vector reference
Definition: interleaver.h:74
interleaver(const char *name)
construct interleaver from file
interleaver(unsigned int k, const std::vector< int > &interleaver)
construct interleaver with redundant vector length parameter
interleaver(const std::vector< int > &interleaver)
construct interleaver from index vector
unsigned int k() const
return length of interleaver
Definition: interleaver.h:72
const std::vector< int > & deinterleaver_indices() const
return deinterleaver index vector reference
Definition: interleaver.h:76
interleaver()
construct empty interleaver
interleaver(unsigned int k, int seed)
construct random interleaver
#define TRELLIS_API
Definition: gr-trellis/include/gnuradio/trellis/api.h:18
GNU Radio logging wrapper.
Definition: basic_block.h:29