GNU Radio C++ API Reference 3.10.12.0
The Free & Open Software Radio Ecosystem
 
Loading...
Searching...
No Matches
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
16#include <string>
17#include <vector>
18
19namespace gr {
20namespace trellis {
21
22/*!
23 * \brief INTERLEAVER class
24 * \ingroup trellis_coding_blk
25 */
27{
28private:
29 std::vector<int> d_interleaver_indices;
30 std::vector<int> d_deinterleaver_indices;
31
32public:
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
unsigned int K() const
return length of interleaver
Definition interleaver.h:83
const std::vector< int > & INTER() const
return interleaver index vector reference
Definition interleaver.h:88
const std::vector< int > & deinterleaver_indices() const
return deinterleaver index vector reference
Definition interleaver.h:76
const std::vector< int > & interleaver_indices() const
return interleaver index vector reference
Definition interleaver.h:74
const std::vector< int > & DEINTER() const
return deinterleaver index vector reference
Definition interleaver.h:93
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
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