summaryrefslogtreecommitdiff
path: root/gr-fec
diff options
context:
space:
mode:
authorJosh Morman <mormjb@gmail.com>2020-04-23 08:57:13 -0400
committerJosh Morman <mormjb@gmail.com>2020-06-04 10:05:47 -0400
commitac45d95b4ee421b1e1a76ba199a490a603c15c6b (patch)
tree5ae672e16f30c63c5b27ddbcdc085eb0fa8b5926 /gr-fec
parenta49a9cced34393f3f755f58797c970c171087fa5 (diff)
fec: add pybind11 bindings
Diffstat (limited to 'gr-fec')
-rw-r--r--gr-fec/python/fec/CMakeLists.txt9
-rw-r--r--gr-fec/python/fec/__init__.py50
-rw-r--r--gr-fec/python/fec/bindings/CMakeLists.txt64
-rw-r--r--gr-fec/python/fec/bindings/async_decoder_python.cc48
-rw-r--r--gr-fec/python/fec/bindings/async_encoder_python.cc49
-rw-r--r--gr-fec/python/fec/bindings/ber_bf_python.cc42
-rw-r--r--gr-fec/python/fec/bindings/cc_common_python.cc30
-rw-r--r--gr-fec/python/fec/bindings/cc_decoder_python.cc57
-rw-r--r--gr-fec/python/fec/bindings/cc_encoder_python.cc50
-rw-r--r--gr-fec/python/fec/bindings/ccsds_encoder_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/conv_bit_corr_bb_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/decode_ccsds_27_fb_python.cc40
-rw-r--r--gr-fec/python/fec/bindings/decoder_python.cc66
-rw-r--r--gr-fec/python/fec/bindings/depuncture_bb_python.cc40
-rw-r--r--gr-fec/python/fec/bindings/docstrings/async_decoder_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/async_encoder_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ber_bf_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/cc_decoder_pydoc_template.h33
-rw-r--r--gr-fec/python/fec/bindings/docstrings/cc_encoder_pydoc_template.h33
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ccsds_encoder_pydoc_template.h33
-rw-r--r--gr-fec/python/fec/bindings/docstrings/conv_bit_corr_bb_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/decode_ccsds_27_fb_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/decoder_pydoc_template.h39
-rw-r--r--gr-fec/python/fec/bindings/docstrings/depuncture_bb_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/dummy_decoder_pydoc_template.h33
-rw-r--r--gr-fec/python/fec/bindings/docstrings/dummy_encoder_pydoc_template.h33
-rw-r--r--gr-fec/python/fec/bindings/docstrings/encode_ccsds_27_bb_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/encoder_pydoc_template.h39
-rw-r--r--gr-fec/python/fec/bindings/docstrings/fec_mtrx_pydoc_template.h60
-rw-r--r--gr-fec/python/fec/bindings/docstrings/generic_decoder_pydoc_template.h93
-rw-r--r--gr-fec/python/fec/bindings/docstrings/generic_encoder_pydoc_template.h66
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_G_matrix_pydoc_template.h36
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_H_matrix_pydoc_template.h42
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_bit_flip_decoder_pydoc_template.h35
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_decoder_pydoc_template.h45
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_encoder_pydoc_template.h39
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_gen_mtrx_encoder_pydoc_template.h35
-rw-r--r--gr-fec/python/fec/bindings/docstrings/ldpc_par_mtrx_encoder_pydoc_template.h44
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_common_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_decoder_common_pydoc_template.h38
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_list_pydoc_template.h28
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_pydoc_template.h27
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_systematic_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_encoder_pydoc_template.h45
-rw-r--r--gr-fec/python/fec/bindings/docstrings/polar_encoder_systematic_pydoc_template.h43
-rw-r--r--gr-fec/python/fec/bindings/docstrings/puncture_bb_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/puncture_ff_pydoc_template.h24
-rw-r--r--gr-fec/python/fec/bindings/docstrings/repetition_decoder_pydoc_template.h35
-rw-r--r--gr-fec/python/fec/bindings/docstrings/repetition_encoder_pydoc_template.h35
-rw-r--r--gr-fec/python/fec/bindings/docstrings/tagged_decoder_pydoc_template.h34
-rw-r--r--gr-fec/python/fec/bindings/docstrings/tagged_encoder_pydoc_template.h34
-rw-r--r--gr-fec/python/fec/bindings/docstrings/tpc_common_pydoc_template.h40
-rw-r--r--gr-fec/python/fec/bindings/docstrings/tpc_decoder_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/tpc_encoder_pydoc_template.h30
-rw-r--r--gr-fec/python/fec/bindings/docstrings/viterbi_pydoc_template.h39
-rw-r--r--gr-fec/python/fec/bindings/dummy_decoder_python.cc49
-rw-r--r--gr-fec/python/fec/bindings/dummy_encoder_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/encode_ccsds_27_bb_python.cc40
-rw-r--r--gr-fec/python/fec/bindings/encoder_python.cc66
-rw-r--r--gr-fec/python/fec/bindings/fec_mtrx_python.cc116
-rw-r--r--gr-fec/python/fec/bindings/generic_decoder_python.cc146
-rw-r--r--gr-fec/python/fec/bindings/generic_encoder_python.cc106
-rw-r--r--gr-fec/python/fec/bindings/ldpc_G_matrix_python.cc60
-rw-r--r--gr-fec/python/fec/bindings/ldpc_H_matrix_python.cc67
-rw-r--r--gr-fec/python/fec/bindings/ldpc_bit_flip_decoder_python.cc52
-rw-r--r--gr-fec/python/fec/bindings/ldpc_decoder_python.cc73
-rw-r--r--gr-fec/python/fec/bindings/ldpc_encoder_python.cc54
-rw-r--r--gr-fec/python/fec/bindings/ldpc_gen_mtrx_encoder_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/ldpc_par_mtrx_encoder_python.cc68
-rw-r--r--gr-fec/python/fec/bindings/polar_common_python.cc48
-rw-r--r--gr-fec/python/fec/bindings/polar_decoder_common_python.cc67
-rw-r--r--gr-fec/python/fec/bindings/polar_decoder_sc_list_python.cc59
-rw-r--r--gr-fec/python/fec/bindings/polar_decoder_sc_python.cc52
-rw-r--r--gr-fec/python/fec/bindings/polar_decoder_sc_systematic_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/polar_encoder_python.cc80
-rw-r--r--gr-fec/python/fec/bindings/polar_encoder_systematic_python.cc72
-rw-r--r--gr-fec/python/fec/bindings/puncture_bb_python.cc39
-rw-r--r--gr-fec/python/fec/bindings/puncture_ff_python.cc39
-rw-r--r--gr-fec/python/fec/bindings/python_bindings.cc136
-rw-r--r--gr-fec/python/fec/bindings/repetition_decoder_python.cc53
-rw-r--r--gr-fec/python/fec/bindings/repetition_encoder_python.cc52
-rw-r--r--gr-fec/python/fec/bindings/tagged_decoder_python.cc58
-rw-r--r--gr-fec/python/fec/bindings/tagged_encoder_python.cc58
-rw-r--r--gr-fec/python/fec/bindings/tpc_common_python.cc77
-rw-r--r--gr-fec/python/fec/bindings/tpc_decoder_python.cc53
-rw-r--r--gr-fec/python/fec/bindings/tpc_encoder_python.cc51
-rw-r--r--gr-fec/python/fec/bindings/viterbi_python.cc78
-rw-r--r--gr-fec/python/fec/capillary_threaded_decoder.py2
-rw-r--r--gr-fec/python/fec/capillary_threaded_encoder.py2
-rw-r--r--gr-fec/python/fec/extended_async_encoder.py2
-rw-r--r--gr-fec/python/fec/extended_decoder.py2
-rw-r--r--gr-fec/python/fec/extended_encoder.py2
-rw-r--r--gr-fec/python/fec/extended_tagged_decoder.py2
-rw-r--r--gr-fec/python/fec/extended_tagged_encoder.py2
-rw-r--r--gr-fec/python/fec/qa_fecapi_dummy.py16
-rw-r--r--gr-fec/python/fec/qa_fecapi_ldpc.py4
-rw-r--r--gr-fec/python/fec/qa_polar_decoder_sc.py6
-rw-r--r--gr-fec/python/fec/threaded_decoder.py2
-rw-r--r--gr-fec/python/fec/threaded_encoder.py2
99 files changed, 4271 insertions, 32 deletions
diff --git a/gr-fec/python/fec/CMakeLists.txt b/gr-fec/python/fec/CMakeLists.txt
index 011d1b4d9e..0f051979ed 100644
--- a/gr-fec/python/fec/CMakeLists.txt
+++ b/gr-fec/python/fec/CMakeLists.txt
@@ -34,16 +34,9 @@ add_subdirectory(polar)
if(ENABLE_TESTING)
list(APPEND GR_TEST_PYTHON_DIRS
- ${CMAKE_BINARY_DIR}/gnuradio-runtime/swig
${CMAKE_BINARY_DIR}/gnuradio-runtime/python
${CMAKE_BINARY_DIR}/gr-fec/python
- ${CMAKE_BINARY_DIR}/gr-fec/swig
${CMAKE_BINARY_DIR}/gr-blocks/python
- ${CMAKE_BINARY_DIR}/gr-blocks/swig
- ${CMAKE_BINARY_DIR}/gr-fft/swig
- ${CMAKE_BINARY_DIR}/gr-analog/swig
- ${CMAKE_BINARY_DIR}/gr-digital/swig
- ${CMAKE_BINARY_DIR}/gr-filter/swig
)
list(APPEND GR_TEST_TARGET_DEPS gnuradio-fec)
@@ -65,3 +58,5 @@ foreach(py_qa_test_file ${py_qa_test_files})
endforeach(py_qa_test_file)
endif(ENABLE_TESTING)
+
+add_subdirectory(bindings)
diff --git a/gr-fec/python/fec/__init__.py b/gr-fec/python/fec/__init__.py
index eda8316a0d..2ca049a380 100644
--- a/gr-fec/python/fec/__init__.py
+++ b/gr-fec/python/fec/__init__.py
@@ -15,12 +15,56 @@ from __future__ import absolute_import
from __future__ import unicode_literals
try:
- from .fec_swig import *
+ from .fec_python import *
except ImportError:
import os
dirname, filename = os.path.split(os.path.abspath(__file__))
- __path__.append(os.path.join(dirname, "..", "..", "swig"))
- from .fec_swig import *
+ __path__.append(os.path.join(dirname, "bindings"))
+ from .fec_python import *
+
+# Pybind cannot bind constructors to make functions that return a different type
+# Remap make functions to __init__ here
+
+cc_encoder = code.cc_encoder
+cc_encoder.__init__ = code.cc_encoder.make
+cc_encoder_make = code.cc_encoder.make
+
+cc_decoder = code.cc_decoder
+cc_decoder.__init__ = code.cc_decoder.make
+cc_decoder_make = code.cc_decoder.make
+
+dummy_encoder = code.dummy_encoder
+dummy_encoder.__init__ = code.dummy_encoder.make
+dummy_encoder_make = code.dummy_encoder.make
+
+dummy_decoder = code.dummy_decoder
+dummy_decoder.__init__ = code.dummy_decoder.make
+dummy_decoder_make = code.dummy_decoder.make
+
+repetition_encoder = code.repetition_encoder
+repetition_encoder.__init__ = code.repetition_encoder.make
+repetition_encoder_make = code.repetition_encoder.make
+
+repetition_decoder = code.repetition_decoder
+repetition_decoder.__init__ = code.repetition_decoder.make
+repetition_decoder_make = code.repetition_decoder.make
+
+polar_encoder = code.polar_encoder
+polar_encoder.__init__ = code.polar_encoder.make
+polar_encoder_make = code.polar_encoder.make
+
+polar_encoder_systematic = code.polar_encoder_systematic
+polar_encoder_systematic.__init__ = code.polar_encoder_systematic.make
+polar_encoder_systematic_make = code.polar_encoder_systematic.make
+
+
+ldpc_H_matrix = code.ldpc_H_matrix
+ldpc_G_matrix = code.ldpc_G_matrix
+ldpc_par_mtrx_encoder = code.ldpc_par_mtrx_encoder
+ldpc_bit_flip_decoder = code.ldpc_bit_flip_decoder
+polar_decoder_sc = code.polar_decoder_sc
+polar_decoder_sc_list = code.polar_decoder_sc_list
+polar_decoder_sc_systematic = code.polar_decoder_sc_systematic
from .bitflip import *
from .extended_encoder import extended_encoder
diff --git a/gr-fec/python/fec/bindings/CMakeLists.txt b/gr-fec/python/fec/bindings/CMakeLists.txt
new file mode 100644
index 0000000000..b6c6571ec4
--- /dev/null
+++ b/gr-fec/python/fec/bindings/CMakeLists.txt
@@ -0,0 +1,64 @@
+########################################################################
+# Python Bindings
+########################################################################
+
+list(APPEND fec_python_files
+ #alist_python.cc
+ async_decoder_python.cc
+ async_encoder_python.cc
+ #awgn_bp_python.cc
+ ber_bf_python.cc
+ cc_common_python.cc
+ cc_decoder_python.cc
+ cc_encoder_python.cc
+ ccsds_encoder_python.cc
+ #cldpc_python.cc
+ conv_bit_corr_bb_python.cc
+ decode_ccsds_27_fb_python.cc
+ decoder_python.cc
+ depuncture_bb_python.cc
+ dummy_decoder_python.cc
+ dummy_encoder_python.cc
+ encode_ccsds_27_bb_python.cc
+ encoder_python.cc
+ fec_mtrx_python.cc
+ generic_decoder_python.cc
+ generic_encoder_python.cc
+ #gf2mat_python.cc
+ #gf2vec_python.cc
+ ldpc_G_matrix_python.cc
+ ldpc_H_matrix_python.cc
+ ldpc_bit_flip_decoder_python.cc
+ ldpc_decoder_python.cc
+ ldpc_encoder_python.cc
+ ldpc_gen_mtrx_encoder_python.cc
+ ldpc_par_mtrx_encoder_python.cc
+ #maxstar_python.cc
+ polar_common_python.cc
+ polar_decoder_common_python.cc
+ polar_decoder_sc_python.cc
+ polar_decoder_sc_list_python.cc
+ polar_decoder_sc_systematic_python.cc
+ polar_encoder_python.cc
+ polar_encoder_systematic_python.cc
+ puncture_bb_python.cc
+ puncture_ff_python.cc
+ repetition_decoder_python.cc
+ repetition_encoder_python.cc
+ #rs_python.cc
+ tagged_decoder_python.cc
+ tagged_encoder_python.cc
+ # tpc_common_python.cc
+ tpc_decoder_python.cc
+ tpc_encoder_python.cc
+ # #viterbi_python.cc
+ python_bindings.cc)
+
+GR_PYBIND_MAKE(fec
+ ../../..
+ gr::fec
+ "${fec_python_files}")
+
+target_link_libraries(fec_python PUBLIC gnuradio-runtime gnuradio-blocks gsl::gsl)
+
+install(TARGETS fec_python DESTINATION ${GR_PYTHON_DIR}/gnuradio/fec COMPONENT pythonapi)
diff --git a/gr-fec/python/fec/bindings/async_decoder_python.cc b/gr-fec/python/fec/bindings/async_decoder_python.cc
new file mode 100644
index 0000000000..8e562504ea
--- /dev/null
+++ b/gr-fec/python/fec/bindings/async_decoder_python.cc
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/async_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <async_decoder_pydoc.h>
+
+void bind_async_decoder(py::module& m)
+{
+
+ using async_decoder = ::gr::fec::async_decoder;
+
+
+ py::class_<async_decoder, gr::block, gr::basic_block, std::shared_ptr<async_decoder>>(
+ m, "async_decoder", D(async_decoder))
+
+ .def(py::init(&async_decoder::make),
+ py::arg("my_decoder"),
+ py::arg("packed") = false,
+ py::arg("rev_pack") = true,
+ py::arg("mtu") = 1500,
+ D(async_decoder, make))
+
+
+ .def("general_work",
+ &async_decoder::general_work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(async_decoder, general_work))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/async_encoder_python.cc b/gr-fec/python/fec/bindings/async_encoder_python.cc
new file mode 100644
index 0000000000..d19db1351c
--- /dev/null
+++ b/gr-fec/python/fec/bindings/async_encoder_python.cc
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/async_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <async_encoder_pydoc.h>
+
+void bind_async_encoder(py::module& m)
+{
+
+ using async_encoder = ::gr::fec::async_encoder;
+
+
+ py::class_<async_encoder, gr::block, gr::basic_block, std::shared_ptr<async_encoder>>(
+ m, "async_encoder", D(async_encoder))
+
+ .def(py::init(&async_encoder::make),
+ py::arg("my_encoder"),
+ py::arg("packed") = false,
+ py::arg("rev_unpack") = true,
+ py::arg("rev_pack") = true,
+ py::arg("mtu") = 1500,
+ D(async_encoder, make))
+
+
+ .def("general_work",
+ &async_encoder::general_work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(async_encoder, general_work))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ber_bf_python.cc b/gr-fec/python/fec/bindings/ber_bf_python.cc
new file mode 100644
index 0000000000..242764e623
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ber_bf_python.cc
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ber_bf.h>
+// pydoc.h is automatically generated in the build directory
+#include <ber_bf_pydoc.h>
+
+void bind_ber_bf(py::module& m)
+{
+
+ using ber_bf = ::gr::fec::ber_bf;
+
+
+ py::class_<ber_bf, gr::block, gr::basic_block, std::shared_ptr<ber_bf>>(
+ m, "ber_bf", D(ber_bf))
+
+ .def(py::init(&ber_bf::make),
+ py::arg("test_mode") = false,
+ py::arg("berminerrors") = 100,
+ py::arg("ber_limit") = -7.,
+ D(ber_bf, make))
+
+
+ .def("total_errors", &ber_bf::total_errors, D(ber_bf, total_errors))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/cc_common_python.cc b/gr-fec/python/fec/bindings/cc_common_python.cc
new file mode 100644
index 0000000000..ca96af99f5
--- /dev/null
+++ b/gr-fec/python/fec/bindings/cc_common_python.cc
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/cc_common.h>
+// pydoc.h is automatically generated in the build directory
+#include <cc_decoder_pydoc.h>
+
+void bind_cc_common(py::module& m)
+{
+ py::enum_<::_cc_mode_t>(m, "_cc_mode_t")
+ .value("CC_STREAMING", ::CC_STREAMING) // 0
+ .value("CC_TERMINATED", ::CC_TERMINATED) // 1
+ .value("CC_TRUNCATED", ::CC_TRUNCATED) // 2
+ .value("CC_TAILBITING", ::CC_TAILBITING) // 3
+ .export_values();
+}
diff --git a/gr-fec/python/fec/bindings/cc_decoder_python.cc b/gr-fec/python/fec/bindings/cc_decoder_python.cc
new file mode 100644
index 0000000000..6f4a8bb724
--- /dev/null
+++ b/gr-fec/python/fec/bindings/cc_decoder_python.cc
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/cc_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <cc_decoder_pydoc.h>
+
+void bind_cc_decoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using cc_decoder = ::gr::fec::code::cc_decoder;
+
+
+ py::class_<cc_decoder, gr::fec::generic_decoder, std::shared_ptr<cc_decoder>>(
+ m_code, "cc_decoder", D(code, cc_decoder))
+
+ // unable to use init because incompatible pointer type is returned
+ .def_static("make",
+ &cc_decoder::make,
+ py::arg("frame_size"),
+ py::arg("k"),
+ py::arg("rate"),
+ py::arg("polys"),
+ py::arg("start_state") = 0,
+ py::arg("end_state") = -1,
+ py::arg("mode") = ::_cc_mode_t::CC_STREAMING,
+ py::arg("padded") = false,
+ D(code, cc_decoder, make))
+
+
+ .def("set_frame_size",
+ &cc_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, cc_decoder, set_frame_size))
+
+
+ .def("rate", &cc_decoder::rate, D(code, cc_decoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/cc_encoder_python.cc b/gr-fec/python/fec/bindings/cc_encoder_python.cc
new file mode 100644
index 0000000000..00b77aed5b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/cc_encoder_python.cc
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/cc_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <cc_encoder_pydoc.h>
+
+void bind_cc_encoder(py::module& m)
+{
+ py::module m_code = m.def_submodule("code");
+
+ using cc_encoder = ::gr::fec::code::cc_encoder;
+
+ py::class_<cc_encoder, gr::fec::generic_encoder, std::shared_ptr<cc_encoder>>(
+ m_code, "cc_encoder", D(code, cc_encoder))
+
+ .def_static("make",
+ &cc_encoder::make,
+ py::arg("frame_size"),
+ py::arg("k"),
+ py::arg("rate"),
+ py::arg("polys"),
+ py::arg("start_state") = 0,
+ py::arg("mode") = ::_cc_mode_t::CC_STREAMING,
+ py::arg("padded") = false,
+ D(code, cc_encoder, make))
+
+ .def("set_frame_size",
+ &cc_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, cc_encoder, set_frame_size))
+
+ .def("rate", &cc_encoder::rate, D(code, cc_encoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ccsds_encoder_python.cc b/gr-fec/python/fec/bindings/ccsds_encoder_python.cc
new file mode 100644
index 0000000000..d0ea8d7235
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ccsds_encoder_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ccsds_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ccsds_encoder_pydoc.h>
+
+void bind_ccsds_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ccsds_encoder = ::gr::fec::code::ccsds_encoder;
+
+
+ py::class_<ccsds_encoder, gr::fec::generic_encoder, std::shared_ptr<ccsds_encoder>>(
+ m_code, "ccsds_encoder", D(code, ccsds_encoder))
+
+ .def_static("make",
+ &ccsds_encoder::make,
+ py::arg("frame_size"),
+ py::arg("start_state") = 0,
+ py::arg("mode") = ::_cc_mode_t::CC_STREAMING,
+ D(code, ccsds_encoder, make))
+
+
+ .def("set_frame_size",
+ &ccsds_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, ccsds_encoder, set_frame_size))
+
+
+ .def("rate", &ccsds_encoder::rate, D(code, ccsds_encoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/conv_bit_corr_bb_python.cc b/gr-fec/python/fec/bindings/conv_bit_corr_bb_python.cc
new file mode 100644
index 0000000000..e419ad4917
--- /dev/null
+++ b/gr-fec/python/fec/bindings/conv_bit_corr_bb_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/conv_bit_corr_bb.h>
+// pydoc.h is automatically generated in the build directory
+#include <conv_bit_corr_bb_pydoc.h>
+
+void bind_conv_bit_corr_bb(py::module& m)
+{
+
+ using conv_bit_corr_bb = ::gr::fec::conv_bit_corr_bb;
+
+
+ py::class_<conv_bit_corr_bb,
+ gr::block,
+ gr::basic_block,
+ std::shared_ptr<conv_bit_corr_bb>>(
+ m, "conv_bit_corr_bb", D(conv_bit_corr_bb))
+
+ .def(py::init(&conv_bit_corr_bb::make),
+ py::arg("correlator"),
+ py::arg("corr_sym"),
+ py::arg("corr_len"),
+ py::arg("cut"),
+ py::arg("flush"),
+ py::arg("thresh"),
+ D(conv_bit_corr_bb, make))
+
+
+ .def("data_garble_rate",
+ &conv_bit_corr_bb::data_garble_rate,
+ py::arg("taps"),
+ py::arg("syn_density"),
+ D(conv_bit_corr_bb, data_garble_rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/decode_ccsds_27_fb_python.cc b/gr-fec/python/fec/bindings/decode_ccsds_27_fb_python.cc
new file mode 100644
index 0000000000..f4449957d7
--- /dev/null
+++ b/gr-fec/python/fec/bindings/decode_ccsds_27_fb_python.cc
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/decode_ccsds_27_fb.h>
+// pydoc.h is automatically generated in the build directory
+#include <decode_ccsds_27_fb_pydoc.h>
+
+void bind_decode_ccsds_27_fb(py::module& m)
+{
+
+ using decode_ccsds_27_fb = ::gr::fec::decode_ccsds_27_fb;
+
+
+ py::class_<decode_ccsds_27_fb,
+ gr::sync_decimator,
+ gr::sync_block,
+ gr::block,
+ gr::basic_block,
+ std::shared_ptr<decode_ccsds_27_fb>>(
+ m, "decode_ccsds_27_fb", D(decode_ccsds_27_fb))
+
+ .def(py::init(&decode_ccsds_27_fb::make), D(decode_ccsds_27_fb, make))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/decoder_python.cc b/gr-fec/python/fec/bindings/decoder_python.cc
new file mode 100644
index 0000000000..dcc4a42071
--- /dev/null
+++ b/gr-fec/python/fec/bindings/decoder_python.cc
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <decoder_pydoc.h>
+
+void bind_decoder(py::module& m)
+{
+
+ using decoder = ::gr::fec::decoder;
+
+
+ py::class_<decoder, gr::block, gr::basic_block, std::shared_ptr<decoder>>(
+ m, "decoder", D(decoder))
+
+ .def(py::init(&decoder::make),
+ py::arg("my_decoder"),
+ py::arg("input_item_size"),
+ py::arg("output_item_size"),
+ D(decoder, make))
+
+
+ .def("general_work",
+ &decoder::general_work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(decoder, general_work))
+
+
+ .def("fixed_rate_ninput_to_noutput",
+ &decoder::fixed_rate_ninput_to_noutput,
+ py::arg("ninput"),
+ D(decoder, fixed_rate_ninput_to_noutput))
+
+
+ .def("fixed_rate_noutput_to_ninput",
+ &decoder::fixed_rate_noutput_to_ninput,
+ py::arg("noutput"),
+ D(decoder, fixed_rate_noutput_to_ninput))
+
+
+ .def("forecast",
+ &decoder::forecast,
+ py::arg("noutput_items"),
+ py::arg("ninput_items_required"),
+ D(decoder, forecast))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/depuncture_bb_python.cc b/gr-fec/python/fec/bindings/depuncture_bb_python.cc
new file mode 100644
index 0000000000..477e07cb6b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/depuncture_bb_python.cc
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/depuncture_bb.h>
+// pydoc.h is automatically generated in the build directory
+#include <depuncture_bb_pydoc.h>
+
+void bind_depuncture_bb(py::module& m)
+{
+
+ using depuncture_bb = ::gr::fec::depuncture_bb;
+
+
+ py::class_<depuncture_bb, gr::block, gr::basic_block, std::shared_ptr<depuncture_bb>>(
+ m, "depuncture_bb", D(depuncture_bb))
+
+ .def(py::init(&depuncture_bb::make),
+ py::arg("puncsize"),
+ py::arg("puncpat"),
+ py::arg("delay") = 0,
+ py::arg("symbol") = 127,
+ D(depuncture_bb, make))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/docstrings/async_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/async_decoder_pydoc_template.h
new file mode 100644
index 0000000000..b720583c19
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/async_decoder_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_async_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_decoder_async_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_decoder_async_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_decoder_general_work = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/async_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/async_encoder_pydoc_template.h
new file mode 100644
index 0000000000..6e7691095b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/async_encoder_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_async_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_encoder_async_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_encoder_async_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_async_encoder_general_work = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ber_bf_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ber_bf_pydoc_template.h
new file mode 100644
index 0000000000..5b19061de4
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ber_bf_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_ber_bf = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ber_bf_ber_bf_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ber_bf_ber_bf_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ber_bf_total_errors = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ber_bf_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/cc_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/cc_decoder_pydoc_template.h
new file mode 100644
index 0000000000..645e2e7433
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/cc_decoder_pydoc_template.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_cc_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_decoder_cc_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_decoder_cc_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_decoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/cc_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/cc_encoder_pydoc_template.h
new file mode 100644
index 0000000000..08575ff4d5
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/cc_encoder_pydoc_template.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_cc_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_encoder_cc_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_encoder_cc_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_cc_encoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ccsds_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ccsds_encoder_pydoc_template.h
new file mode 100644
index 0000000000..93e1616c49
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ccsds_encoder_pydoc_template.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder_ccsds_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder_ccsds_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ccsds_encoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/conv_bit_corr_bb_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/conv_bit_corr_bb_pydoc_template.h
new file mode 100644
index 0000000000..39cd93f173
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/conv_bit_corr_bb_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_conv_bit_corr_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_conv_bit_corr_bb_conv_bit_corr_bb_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_conv_bit_corr_bb_conv_bit_corr_bb_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_conv_bit_corr_bb_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_conv_bit_corr_bb_data_garble_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/decode_ccsds_27_fb_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/decode_ccsds_27_fb_pydoc_template.h
new file mode 100644
index 0000000000..68364c8319
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/decode_ccsds_27_fb_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_decode_ccsds_27_fb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decode_ccsds_27_fb_decode_ccsds_27_fb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decode_ccsds_27_fb_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/decoder_pydoc_template.h
new file mode 100644
index 0000000000..85afe6ec0a
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/decoder_pydoc_template.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_general_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_fixed_rate_ninput_to_noutput = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_fixed_rate_noutput_to_ninput = R"doc()doc";
+
+
+static const char* __doc_gr_fec_decoder_forecast = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/depuncture_bb_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/depuncture_bb_pydoc_template.h
new file mode 100644
index 0000000000..1daaa58cb7
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/depuncture_bb_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_depuncture_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_depuncture_bb_depuncture_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_depuncture_bb_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/dummy_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/dummy_decoder_pydoc_template.h
new file mode 100644
index 0000000000..bb91d435ac
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/dummy_decoder_pydoc_template.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_dummy_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_decoder_dummy_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_decoder_dummy_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_decoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/dummy_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/dummy_encoder_pydoc_template.h
new file mode 100644
index 0000000000..699b523c2a
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/dummy_encoder_pydoc_template.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_dummy_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_encoder_dummy_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_encoder_dummy_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_dummy_encoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/encode_ccsds_27_bb_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/encode_ccsds_27_bb_pydoc_template.h
new file mode 100644
index 0000000000..b3ff539b06
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/encode_ccsds_27_bb_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_encode_ccsds_27_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encode_ccsds_27_bb_encode_ccsds_27_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encode_ccsds_27_bb_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/encoder_pydoc_template.h
new file mode 100644
index 0000000000..1dc398f134
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/encoder_pydoc_template.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_general_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_fixed_rate_ninput_to_noutput = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_fixed_rate_noutput_to_ninput = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encoder_forecast = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/fec_mtrx_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/fec_mtrx_pydoc_template.h
new file mode 100644
index 0000000000..0b35a054af
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/fec_mtrx_pydoc_template.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_block_data = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_matrix = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx_fec_mtrx = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx_encode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx_decode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx_n = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_fec_mtrx_k = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_matrix_free = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_read_matrix_from_file = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_write_matrix_to_file = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_generate_G_transpose = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_generate_G = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_generate_H = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_print_matrix = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/generic_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/generic_decoder_pydoc_template.h
new file mode 100644
index 0000000000..ed0658783d
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/generic_decoder_pydoc_template.h
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_generic_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_generic_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_generic_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_generic_decoder_2 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_generic_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_unique_id = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_alias = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_history = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_shift = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_input_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_output_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_input_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_output_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_decoder_get_iterations = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_shift = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_history = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_input_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_output_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_input_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_decoder_output_conversion = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/generic_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/generic_encoder_pydoc_template.h
new file mode 100644
index 0000000000..36057f6c93
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/generic_encoder_pydoc_template.h
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_generic_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_generic_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_generic_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_generic_encoder_2 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_generic_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_unique_id = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_alias = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_get_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_get_input_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_get_output_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_generic_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_encoder_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_encoder_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_encoder_input_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_get_encoder_output_conversion = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_G_matrix_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_G_matrix_pydoc_template.h
new file mode 100644
index 0000000000..5bb3172fff
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_G_matrix_pydoc_template.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_ldpc_G_matrix_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_ldpc_G_matrix_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_encode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_decode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_G_matrix_get_base_sptr = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_H_matrix_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_H_matrix_pydoc_template.h
new file mode 100644
index 0000000000..b74068acfe
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_H_matrix_pydoc_template.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_ldpc_H_matrix_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_ldpc_H_matrix_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_encode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_decode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_n = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_k = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_H_matrix_get_base_sptr = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_bit_flip_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_bit_flip_decoder_pydoc_template.h
new file mode 100644
index 0000000000..66314bc79e
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_bit_flip_decoder_pydoc_template.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder_ldpc_bit_flip_decoder_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder_ldpc_bit_flip_decoder_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_bit_flip_decoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_decoder_pydoc_template.h
new file mode 100644
index 0000000000..05f07725c5
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_decoder_pydoc_template.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_ldpc_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_ldpc_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_get_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_get_input_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_get_output_item_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_decoder_get_iterations = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_encoder_pydoc_template.h
new file mode 100644
index 0000000000..9aff7d372b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_encoder_pydoc_template.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_ldpc_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_ldpc_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_ldpc_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_ldpc_encoder_get_input_size = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_gen_mtrx_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_gen_mtrx_encoder_pydoc_template.h
new file mode 100644
index 0000000000..efc24b4553
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_gen_mtrx_encoder_pydoc_template.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder_ldpc_gen_mtrx_encoder_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder_ldpc_gen_mtrx_encoder_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_gen_mtrx_encoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/ldpc_par_mtrx_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/ldpc_par_mtrx_encoder_pydoc_template.h
new file mode 100644
index 0000000000..5b57ccc64f
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/ldpc_par_mtrx_encoder_pydoc_template.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_ldpc_par_mtrx_encoder_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_ldpc_par_mtrx_encoder_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_make_H = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_ldpc_par_mtrx_encoder_get_input_size = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_common_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_common_pydoc_template.h
new file mode 100644
index 0000000000..7061e88837
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_common_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_common = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_common_polar_common_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_common_polar_common_1 = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_decoder_common_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_decoder_common_pydoc_template.h
new file mode 100644
index 0000000000..b281c60814
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_decoder_common_pydoc_template.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_polar_decoder_common_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_polar_decoder_common_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_get_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_common_set_frame_size = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_list_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_list_pydoc_template.h
new file mode 100644
index 0000000000..2029115dcf
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_list_pydoc_template.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_list = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_list_polar_decoder_sc_list =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_list_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_list_generic_work = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_pydoc_template.h
new file mode 100644
index 0000000000..7f0498a9b9
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_pydoc_template.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_polar_decoder_sc = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_generic_work = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_systematic_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_systematic_pydoc_template.h
new file mode 100644
index 0000000000..06a25bdf8d
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_decoder_sc_systematic_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_systematic = R"doc()doc";
+
+
+static const char*
+ __doc_gr_fec_code_polar_decoder_sc_systematic_polar_decoder_sc_systematic =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_systematic_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_decoder_sc_systematic_generic_work =
+ R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_encoder_pydoc_template.h
new file mode 100644
index 0000000000..cafe23b322
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_encoder_pydoc_template.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_polar_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_generic_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_get_input_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_get_output_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_get_input_conversion = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_get_output_conversion = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/polar_encoder_systematic_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/polar_encoder_systematic_pydoc_template.h
new file mode 100644
index 0000000000..298dc4e806
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/polar_encoder_systematic_pydoc_template.h
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_polar_encoder_systematic =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_generic_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_get_input_size =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_get_output_size =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_polar_encoder_systematic_set_frame_size =
+ R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/puncture_bb_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/puncture_bb_pydoc_template.h
new file mode 100644
index 0000000000..4dcb6bcdbf
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/puncture_bb_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_puncture_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_puncture_bb_puncture_bb = R"doc()doc";
+
+
+static const char* __doc_gr_fec_puncture_bb_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/puncture_ff_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/puncture_ff_pydoc_template.h
new file mode 100644
index 0000000000..790e1f8625
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/puncture_ff_pydoc_template.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_puncture_ff = R"doc()doc";
+
+
+static const char* __doc_gr_fec_puncture_ff_puncture_ff = R"doc()doc";
+
+
+static const char* __doc_gr_fec_puncture_ff_make = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/repetition_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/repetition_decoder_pydoc_template.h
new file mode 100644
index 0000000000..d033a6be66
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/repetition_decoder_pydoc_template.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_repetition_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_decoder_repetition_decoder_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_decoder_repetition_decoder_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_decoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_decoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/repetition_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/repetition_encoder_pydoc_template.h
new file mode 100644
index 0000000000..613f03da06
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/repetition_encoder_pydoc_template.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_code_repetition_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_encoder_repetition_encoder_0 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_encoder_repetition_encoder_1 =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_encoder_set_frame_size = R"doc()doc";
+
+
+static const char* __doc_gr_fec_code_repetition_encoder_rate = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/tagged_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/tagged_decoder_pydoc_template.h
new file mode 100644
index 0000000000..f957469ad6
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/tagged_decoder_pydoc_template.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_tagged_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_decoder_tagged_decoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_decoder_tagged_decoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_decoder_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_decoder_calculate_output_stream_length =
+ R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/tagged_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/tagged_encoder_pydoc_template.h
new file mode 100644
index 0000000000..e0fabbd171
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/tagged_encoder_pydoc_template.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_tagged_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_encoder_tagged_encoder_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_encoder_tagged_encoder_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_encoder_work = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tagged_encoder_calculate_output_stream_length =
+ R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/tpc_common_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/tpc_common_pydoc_template.h
new file mode 100644
index 0000000000..a1e1bdd3a4
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/tpc_common_pydoc_template.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_tpc_common = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_tpc_common_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_tpc_common_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_parity_counter = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_rsc_enc_bit = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_precomputeStateTransitionMatrix_RSCPoly =
+ R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_rsc_tail = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_common_itob = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/tpc_decoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/tpc_decoder_pydoc_template.h
new file mode 100644
index 0000000000..21c27ee8cb
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/tpc_decoder_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_tpc_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_decoder_tpc_decoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_decoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_decoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_decoder_set_frame_size = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/tpc_encoder_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/tpc_encoder_pydoc_template.h
new file mode 100644
index 0000000000..5608bc2555
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/tpc_encoder_pydoc_template.h
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_tpc_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_encoder_tpc_encoder = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_encoder_make = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_encoder_rate = R"doc()doc";
+
+
+static const char* __doc_gr_fec_tpc_encoder_set_frame_size = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/docstrings/viterbi_pydoc_template.h b/gr-fec/python/fec/bindings/docstrings/viterbi_pydoc_template.h
new file mode 100644
index 0000000000..d58776ee29
--- /dev/null
+++ b/gr-fec/python/fec/bindings/docstrings/viterbi_pydoc_template.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+#include "pydoc_macros.h"
+#define D(...) DOC(gr, fec, __VA_ARGS__)
+/*
+ This file contains placeholders for docstrings for the Python bindings.
+ Do not edit! These were automatically extracted during the binding process
+ and will be overwritten during the build process
+ */
+
+
+static const char* __doc_gr_fec_viterbi_state = R"doc()doc";
+
+
+static const char* __doc_gr_fec_viterbi_state_viterbi_state_0 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_viterbi_state_viterbi_state_1 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_gen_met = R"doc()doc";
+
+
+static const char* __doc_gr_fec_encode = R"doc()doc";
+
+
+static const char* __doc_gr_fec_viterbi_chunks_init = R"doc()doc";
+
+
+static const char* __doc_gr_fec_viterbi_butterfly2 = R"doc()doc";
+
+
+static const char* __doc_gr_fec_viterbi_get_output = R"doc()doc";
diff --git a/gr-fec/python/fec/bindings/dummy_decoder_python.cc b/gr-fec/python/fec/bindings/dummy_decoder_python.cc
new file mode 100644
index 0000000000..83a4df6f8a
--- /dev/null
+++ b/gr-fec/python/fec/bindings/dummy_decoder_python.cc
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/dummy_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <dummy_decoder_pydoc.h>
+
+void bind_dummy_decoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using dummy_decoder = ::gr::fec::code::dummy_decoder;
+
+
+ py::class_<dummy_decoder, gr::fec::generic_decoder, std::shared_ptr<dummy_decoder>>(
+ m_code, "dummy_decoder", D(code, dummy_decoder))
+
+ .def_static("make",
+ &dummy_decoder::make,
+ py::arg("frame_size"),
+ D(code, dummy_decoder, make))
+
+
+ .def("set_frame_size",
+ &dummy_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, dummy_decoder, set_frame_size))
+
+
+ .def("rate", &dummy_decoder::rate, D(code, dummy_decoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/dummy_encoder_python.cc b/gr-fec/python/fec/bindings/dummy_encoder_python.cc
new file mode 100644
index 0000000000..5f8f332848
--- /dev/null
+++ b/gr-fec/python/fec/bindings/dummy_encoder_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/dummy_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <dummy_encoder_pydoc.h>
+
+void bind_dummy_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using dummy_encoder = ::gr::fec::code::dummy_encoder;
+
+
+ py::class_<dummy_encoder, gr::fec::generic_encoder, std::shared_ptr<dummy_encoder>>(
+ m_code, "dummy_encoder", D(code, dummy_encoder))
+
+ .def_static("make",
+ &dummy_encoder::make,
+ py::arg("frame_size"),
+ py::arg("pack") = false,
+ py::arg("packed_bits") = false,
+ D(code, dummy_encoder, make))
+
+
+ .def("set_frame_size",
+ &dummy_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, dummy_encoder, set_frame_size))
+
+
+ .def("rate", &dummy_encoder::rate, D(code, dummy_encoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/encode_ccsds_27_bb_python.cc b/gr-fec/python/fec/bindings/encode_ccsds_27_bb_python.cc
new file mode 100644
index 0000000000..af868c8121
--- /dev/null
+++ b/gr-fec/python/fec/bindings/encode_ccsds_27_bb_python.cc
@@ -0,0 +1,40 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/encode_ccsds_27_bb.h>
+// pydoc.h is automatically generated in the build directory
+#include <encode_ccsds_27_bb_pydoc.h>
+
+void bind_encode_ccsds_27_bb(py::module& m)
+{
+
+ using encode_ccsds_27_bb = ::gr::fec::encode_ccsds_27_bb;
+
+
+ py::class_<encode_ccsds_27_bb,
+ gr::sync_interpolator,
+ gr::sync_block,
+ gr::block,
+ gr::basic_block,
+ std::shared_ptr<encode_ccsds_27_bb>>(
+ m, "encode_ccsds_27_bb", D(encode_ccsds_27_bb))
+
+ .def(py::init(&encode_ccsds_27_bb::make), D(encode_ccsds_27_bb, make))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/encoder_python.cc b/gr-fec/python/fec/bindings/encoder_python.cc
new file mode 100644
index 0000000000..ac22478347
--- /dev/null
+++ b/gr-fec/python/fec/bindings/encoder_python.cc
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <encoder_pydoc.h>
+
+void bind_encoder(py::module& m)
+{
+
+ using encoder = ::gr::fec::encoder;
+
+
+ py::class_<encoder, gr::block, gr::basic_block, std::shared_ptr<encoder>>(
+ m, "encoder", D(encoder))
+
+ .def(py::init(&encoder::make),
+ py::arg("my_encoder"),
+ py::arg("input_item_size"),
+ py::arg("output_item_size"),
+ D(encoder, make))
+
+
+ .def("general_work",
+ &encoder::general_work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(encoder, general_work))
+
+
+ .def("fixed_rate_ninput_to_noutput",
+ &encoder::fixed_rate_ninput_to_noutput,
+ py::arg("ninput"),
+ D(encoder, fixed_rate_ninput_to_noutput))
+
+
+ .def("fixed_rate_noutput_to_ninput",
+ &encoder::fixed_rate_noutput_to_ninput,
+ py::arg("noutput"),
+ D(encoder, fixed_rate_noutput_to_ninput))
+
+
+ .def("forecast",
+ &encoder::forecast,
+ py::arg("noutput_items"),
+ py::arg("ninput_items_required"),
+ D(encoder, forecast))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/fec_mtrx_python.cc b/gr-fec/python/fec/bindings/fec_mtrx_python.cc
new file mode 100644
index 0000000000..dc3b7aa2a1
--- /dev/null
+++ b/gr-fec/python/fec/bindings/fec_mtrx_python.cc
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/fec_mtrx.h>
+// pydoc.h is automatically generated in the build directory
+#include <fec_mtrx_pydoc.h>
+
+void bind_fec_mtrx(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using block_data = ::gr::fec::code::block_data;
+ using matrix = ::gr::fec::code::matrix;
+ using fec_mtrx = ::gr::fec::code::fec_mtrx;
+
+
+ py::class_<block_data, std::shared_ptr<block_data>>(
+ m_code, "block_data", D(code, block_data))
+
+
+ ;
+
+ py::class_<matrix, std::shared_ptr<matrix>>(m_code, "matrix", D(code, matrix))
+
+
+ ;
+
+
+ py::class_<fec_mtrx, std::shared_ptr<fec_mtrx>>(m_code, "fec_mtrx", D(code, fec_mtrx))
+
+ // .def(py::init<gr::fec::code::fec_mtrx const&>(),
+ // py::arg("arg0"),
+ // D(code, fec_mtrx, fec_mtrx))
+
+
+ .def("encode",
+ &fec_mtrx::encode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ D(code, fec_mtrx, encode))
+
+
+ .def("decode",
+ &fec_mtrx::decode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ py::arg("frame_size"),
+ py::arg("max_iterations"),
+ D(code, fec_mtrx, decode))
+
+
+ .def("n", &fec_mtrx::n, D(code, fec_mtrx, n))
+
+
+ .def("k", &fec_mtrx::k, D(code, fec_mtrx, k))
+
+ ;
+
+
+ m_code.def(
+ "matrix_free", &::gr::fec::code::matrix_free, py::arg("x"), D(code, matrix_free));
+
+
+ m_code.def("read_matrix_from_file",
+ &::gr::fec::code::read_matrix_from_file,
+ py::arg("filename"),
+ D(code, read_matrix_from_file));
+
+
+ m_code.def("write_matrix_to_file",
+ &::gr::fec::code::write_matrix_to_file,
+ py::arg("filename"),
+ py::arg("M"),
+ D(code, write_matrix_to_file));
+
+
+ m_code.def("generate_G_transpose",
+ &::gr::fec::code::generate_G_transpose,
+ py::arg("H_obj"),
+ D(code, generate_G_transpose));
+
+
+ m_code.def("generate_G",
+ &::gr::fec::code::generate_G,
+ py::arg("H_obj"),
+ D(code, generate_G));
+
+
+ m_code.def("generate_H",
+ &::gr::fec::code::generate_H,
+ py::arg("G_obj"),
+ D(code, generate_H));
+
+
+ m_code.def("print_matrix",
+ &::gr::fec::code::print_matrix,
+ py::arg("M"),
+ py::arg("numpy") = false,
+ D(code, print_matrix));
+}
diff --git a/gr-fec/python/fec/bindings/generic_decoder_python.cc b/gr-fec/python/fec/bindings/generic_decoder_python.cc
new file mode 100644
index 0000000000..298631cad4
--- /dev/null
+++ b/gr-fec/python/fec/bindings/generic_decoder_python.cc
@@ -0,0 +1,146 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/generic_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <generic_decoder_pydoc.h>
+
+void bind_generic_decoder(py::module& m)
+{
+
+ using generic_decoder = ::gr::fec::generic_decoder;
+
+
+ py::class_<generic_decoder, std::shared_ptr<generic_decoder>>(
+ m, "generic_decoder", D(generic_decoder))
+
+ // .def(py::init<>(),D(generic_decoder,generic_decoder,0))
+ // .def(py::init<std::string>(), py::arg("name"),
+ // D(generic_decoder,generic_decoder,1)
+ // )
+ // .def(py::init<gr::fec::generic_decoder const &>(), py::arg("arg0"),
+ // D(generic_decoder,generic_decoder,2)
+ // )
+
+
+ .def("generic_work",
+ &generic_decoder::generic_work,
+ py::arg("inbuffer"),
+ py::arg("outbuffer"),
+ D(generic_decoder, generic_work))
+
+
+ .def("unique_id", &generic_decoder::unique_id, D(generic_decoder, unique_id))
+
+
+ .def("alias", &generic_decoder::alias, D(generic_decoder, alias))
+
+
+ .def("rate", &generic_decoder::rate, D(generic_decoder, rate))
+
+
+ .def("get_input_size",
+ &generic_decoder::get_input_size,
+ D(generic_decoder, get_input_size))
+
+
+ .def("get_output_size",
+ &generic_decoder::get_output_size,
+ D(generic_decoder, get_output_size))
+
+
+ .def(
+ "get_history", &generic_decoder::get_history, D(generic_decoder, get_history))
+
+
+ .def("get_shift", &generic_decoder::get_shift, D(generic_decoder, get_shift))
+
+
+ .def("get_input_item_size",
+ &generic_decoder::get_input_item_size,
+ D(generic_decoder, get_input_item_size))
+
+
+ .def("get_output_item_size",
+ &generic_decoder::get_output_item_size,
+ D(generic_decoder, get_output_item_size))
+
+
+ .def("get_input_conversion",
+ &generic_decoder::get_input_conversion,
+ D(generic_decoder, get_input_conversion))
+
+
+ .def("get_output_conversion",
+ &generic_decoder::get_output_conversion,
+ D(generic_decoder, get_output_conversion))
+
+
+ .def("set_frame_size",
+ &generic_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(generic_decoder, set_frame_size))
+
+
+ .def("get_iterations",
+ &generic_decoder::get_iterations,
+ D(generic_decoder, get_iterations))
+
+ ;
+
+
+ m.def("get_decoder_output_size",
+ &::gr::fec::get_decoder_output_size,
+ py::arg("my_decoder"),
+ D(get_decoder_output_size));
+
+
+ m.def("get_decoder_input_size",
+ &::gr::fec::get_decoder_input_size,
+ py::arg("my_decoder"),
+ D(get_decoder_input_size));
+
+
+ m.def("get_shift", &::gr::fec::get_shift, py::arg("my_decoder"), D(get_shift));
+
+
+ m.def("get_history", &::gr::fec::get_history, py::arg("my_decoder"), D(get_history));
+
+
+ m.def("get_decoder_input_item_size",
+ &::gr::fec::get_decoder_input_item_size,
+ py::arg("my_decoder"),
+ D(get_decoder_input_item_size));
+
+
+ m.def("get_decoder_output_item_size",
+ &::gr::fec::get_decoder_output_item_size,
+ py::arg("my_decoder"),
+ D(get_decoder_output_item_size));
+
+
+ m.def("get_decoder_input_conversion",
+ &::gr::fec::get_decoder_input_conversion,
+ py::arg("my_decoder"),
+ D(get_decoder_input_conversion));
+
+
+ m.def("get_decoder_output_conversion",
+ &::gr::fec::get_decoder_output_conversion,
+ py::arg("my_decoder"),
+ D(get_decoder_output_conversion));
+}
diff --git a/gr-fec/python/fec/bindings/generic_encoder_python.cc b/gr-fec/python/fec/bindings/generic_encoder_python.cc
new file mode 100644
index 0000000000..2376e57925
--- /dev/null
+++ b/gr-fec/python/fec/bindings/generic_encoder_python.cc
@@ -0,0 +1,106 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/generic_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <generic_encoder_pydoc.h>
+
+void bind_generic_encoder(py::module& m)
+{
+
+ using generic_encoder = ::gr::fec::generic_encoder;
+
+
+ py::class_<generic_encoder, std::shared_ptr<generic_encoder>>(
+ m, "generic_encoder", D(generic_encoder))
+
+ // .def(py::init<>(),D(generic_encoder,generic_encoder,0))
+ // .def(py::init<std::string>(), py::arg("name"),
+ // D(generic_encoder,generic_encoder,1)
+ // )
+ // .def(py::init<gr::fec::generic_encoder const &>(), py::arg("arg0"),
+ // D(generic_encoder,generic_encoder,2)
+ // )
+
+
+ .def("generic_work",
+ &generic_encoder::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(generic_encoder, generic_work))
+
+
+ .def("unique_id", &generic_encoder::unique_id, D(generic_encoder, unique_id))
+
+
+ .def("alias", &generic_encoder::alias, D(generic_encoder, alias))
+
+
+ .def("rate", &generic_encoder::rate, D(generic_encoder, rate))
+
+
+ .def("get_input_size",
+ &generic_encoder::get_input_size,
+ D(generic_encoder, get_input_size))
+
+
+ .def("get_output_size",
+ &generic_encoder::get_output_size,
+ D(generic_encoder, get_output_size))
+
+
+ .def("get_input_conversion",
+ &generic_encoder::get_input_conversion,
+ D(generic_encoder, get_input_conversion))
+
+
+ .def("get_output_conversion",
+ &generic_encoder::get_output_conversion,
+ D(generic_encoder, get_output_conversion))
+
+
+ .def("set_frame_size",
+ &generic_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(generic_encoder, set_frame_size))
+
+ ;
+
+
+ m.def("get_encoder_output_size",
+ &::gr::fec::get_encoder_output_size,
+ py::arg("my_encoder"),
+ D(get_encoder_output_size));
+
+
+ m.def("get_encoder_input_size",
+ &::gr::fec::get_encoder_input_size,
+ py::arg("my_encoder"),
+ D(get_encoder_input_size));
+
+
+ m.def("get_encoder_input_conversion",
+ &::gr::fec::get_encoder_input_conversion,
+ py::arg("my_encoder"),
+ D(get_encoder_input_conversion));
+
+
+ m.def("get_encoder_output_conversion",
+ &::gr::fec::get_encoder_output_conversion,
+ py::arg("my_encoder"),
+ D(get_encoder_output_conversion));
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_G_matrix_python.cc b/gr-fec/python/fec/bindings/ldpc_G_matrix_python.cc
new file mode 100644
index 0000000000..e478b59d8b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_G_matrix_python.cc
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_G_matrix.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_G_matrix_pydoc.h>
+
+void bind_ldpc_G_matrix(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ldpc_G_matrix = ::gr::fec::code::ldpc_G_matrix;
+
+
+ py::class_<ldpc_G_matrix, gr::fec::code::fec_mtrx, std::shared_ptr<ldpc_G_matrix>>(
+ m_code, "ldpc_G_matrix", D(code, ldpc_G_matrix))
+
+ .def(py::init(&ldpc_G_matrix::make),
+ py::arg("filename"),
+ D(code, ldpc_G_matrix, make))
+
+
+ .def("encode",
+ &ldpc_G_matrix::encode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ D(code, ldpc_G_matrix, encode))
+
+
+ .def("decode",
+ &ldpc_G_matrix::decode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ py::arg("frame_size"),
+ py::arg("max_iterations"),
+ D(code, ldpc_G_matrix, decode))
+
+
+ .def("get_base_sptr",
+ &ldpc_G_matrix::get_base_sptr,
+ D(code, ldpc_G_matrix, get_base_sptr))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_H_matrix_python.cc b/gr-fec/python/fec/bindings/ldpc_H_matrix_python.cc
new file mode 100644
index 0000000000..9f5c6250ff
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_H_matrix_python.cc
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_H_matrix.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_H_matrix_pydoc.h>
+
+void bind_ldpc_H_matrix(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ldpc_H_matrix = ::gr::fec::code::ldpc_H_matrix;
+
+
+ py::class_<ldpc_H_matrix, gr::fec::code::fec_mtrx, std::shared_ptr<ldpc_H_matrix>>(
+ m_code, "ldpc_H_matrix", D(code, ldpc_H_matrix))
+
+ .def(py::init(&ldpc_H_matrix::make),
+ py::arg("filename"),
+ py::arg("gap"),
+ D(code, ldpc_H_matrix, make))
+
+
+ .def("encode",
+ &ldpc_H_matrix::encode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ D(code, ldpc_H_matrix, encode))
+
+
+ .def("decode",
+ &ldpc_H_matrix::decode,
+ py::arg("outbuffer"),
+ py::arg("inbuffer"),
+ py::arg("frame_size"),
+ py::arg("max_iterations"),
+ D(code, ldpc_H_matrix, decode))
+
+
+ .def("n", &ldpc_H_matrix::n, D(code, ldpc_H_matrix, n))
+
+
+ .def("k", &ldpc_H_matrix::k, D(code, ldpc_H_matrix, k))
+
+
+ .def("get_base_sptr",
+ &ldpc_H_matrix::get_base_sptr,
+ D(code, ldpc_H_matrix, get_base_sptr))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_bit_flip_decoder_python.cc b/gr-fec/python/fec/bindings/ldpc_bit_flip_decoder_python.cc
new file mode 100644
index 0000000000..c3fe985856
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_bit_flip_decoder_python.cc
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_bit_flip_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_bit_flip_decoder_pydoc.h>
+
+void bind_ldpc_bit_flip_decoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ldpc_bit_flip_decoder = ::gr::fec::code::ldpc_bit_flip_decoder;
+
+
+ py::class_<ldpc_bit_flip_decoder,
+ gr::fec::generic_decoder,
+ std::shared_ptr<ldpc_bit_flip_decoder>>(
+ m_code, "ldpc_bit_flip_decoder", D(code, ldpc_bit_flip_decoder))
+
+ .def_static("make",
+ &ldpc_bit_flip_decoder::make,
+ py::arg("mtrx_obj"),
+ py::arg("max_iter") = 100,
+ D(code, ldpc_bit_flip_decoder, make))
+
+
+ .def("set_frame_size",
+ &ldpc_bit_flip_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, ldpc_bit_flip_decoder, set_frame_size))
+
+
+ .def("rate", &ldpc_bit_flip_decoder::rate, D(code, ldpc_bit_flip_decoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_decoder_python.cc b/gr-fec/python/fec/bindings/ldpc_decoder_python.cc
new file mode 100644
index 0000000000..5fe7099a66
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_decoder_python.cc
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_decoder_pydoc.h>
+
+void bind_ldpc_decoder(py::module& m)
+{
+
+ using ldpc_decoder = ::gr::fec::ldpc_decoder;
+
+
+ py::class_<ldpc_decoder, gr::fec::generic_decoder, std::shared_ptr<ldpc_decoder>>(
+ m, "ldpc_decoder", D(ldpc_decoder))
+
+ .def_static("make",
+ &ldpc_decoder::make,
+ py::arg("alist_file"),
+ py::arg("sigma") = 0.5,
+ py::arg("max_iterations") = 50,
+ D(ldpc_decoder, make))
+
+
+ .def("rate", &ldpc_decoder::rate, D(ldpc_decoder, rate))
+
+
+ .def("set_frame_size",
+ &ldpc_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(ldpc_decoder, set_frame_size))
+
+
+ .def("get_output_size",
+ &ldpc_decoder::get_output_size,
+ D(ldpc_decoder, get_output_size))
+
+
+ .def("get_input_size",
+ &ldpc_decoder::get_input_size,
+ D(ldpc_decoder, get_input_size))
+
+
+ .def("get_input_item_size",
+ &ldpc_decoder::get_input_item_size,
+ D(ldpc_decoder, get_input_item_size))
+
+
+ .def("get_output_item_size",
+ &ldpc_decoder::get_output_item_size,
+ D(ldpc_decoder, get_output_item_size))
+
+
+ .def("get_iterations",
+ &ldpc_decoder::get_iterations,
+ D(ldpc_decoder, get_iterations))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_encoder_python.cc b/gr-fec/python/fec/bindings/ldpc_encoder_python.cc
new file mode 100644
index 0000000000..24368757aa
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_encoder_python.cc
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_encoder_pydoc.h>
+
+void bind_ldpc_encoder(py::module& m)
+{
+
+ using ldpc_encoder = ::gr::fec::ldpc_encoder;
+
+
+ py::class_<ldpc_encoder, gr::fec::generic_encoder, std::shared_ptr<ldpc_encoder>>(
+ m, "ldpc_encoder", D(ldpc_encoder))
+
+ .def_static(
+ "make", &ldpc_encoder::make, py::arg("alist_file"), D(ldpc_encoder, make))
+
+
+ .def("rate", &ldpc_encoder::rate, D(ldpc_encoder, rate))
+
+
+ .def("set_frame_size",
+ &ldpc_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(ldpc_encoder, set_frame_size))
+
+
+ .def("get_output_size",
+ &ldpc_encoder::get_output_size,
+ D(ldpc_encoder, get_output_size))
+
+
+ .def("get_input_size",
+ &ldpc_encoder::get_input_size,
+ D(ldpc_encoder, get_input_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_gen_mtrx_encoder_python.cc b/gr-fec/python/fec/bindings/ldpc_gen_mtrx_encoder_python.cc
new file mode 100644
index 0000000000..d8d4a97a06
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_gen_mtrx_encoder_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_gen_mtrx_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_gen_mtrx_encoder_pydoc.h>
+
+void bind_ldpc_gen_mtrx_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ldpc_gen_mtrx_encoder = ::gr::fec::code::ldpc_gen_mtrx_encoder;
+
+
+ py::class_<ldpc_gen_mtrx_encoder,
+ gr::fec::generic_encoder,
+ std::shared_ptr<ldpc_gen_mtrx_encoder>>(
+ m_code, "ldpc_gen_mtrx_encoder", D(code, ldpc_gen_mtrx_encoder))
+
+ .def_static("make",
+ &ldpc_gen_mtrx_encoder::make,
+ py::arg("G_obj"),
+ D(code, ldpc_gen_mtrx_encoder, make))
+
+
+ .def("set_frame_size",
+ &ldpc_gen_mtrx_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, ldpc_gen_mtrx_encoder, set_frame_size))
+
+
+ .def("rate", &ldpc_gen_mtrx_encoder::rate, D(code, ldpc_gen_mtrx_encoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/ldpc_par_mtrx_encoder_python.cc b/gr-fec/python/fec/bindings/ldpc_par_mtrx_encoder_python.cc
new file mode 100644
index 0000000000..88e9b63090
--- /dev/null
+++ b/gr-fec/python/fec/bindings/ldpc_par_mtrx_encoder_python.cc
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/ldpc_par_mtrx_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <ldpc_par_mtrx_encoder_pydoc.h>
+
+void bind_ldpc_par_mtrx_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using ldpc_par_mtrx_encoder = ::gr::fec::code::ldpc_par_mtrx_encoder;
+
+
+ py::class_<ldpc_par_mtrx_encoder,
+ gr::fec::generic_encoder,
+ std::shared_ptr<ldpc_par_mtrx_encoder>>(
+ m_code, "ldpc_par_mtrx_encoder", D(code, ldpc_par_mtrx_encoder))
+
+ .def_static("make",
+ &ldpc_par_mtrx_encoder::make,
+ py::arg("alist_file"),
+ py::arg("gap") = 0,
+ D(code, ldpc_par_mtrx_encoder, make))
+
+
+ .def_static("make_H",
+ &ldpc_par_mtrx_encoder::make_H,
+ py::arg("H_obj"),
+ D(code, ldpc_par_mtrx_encoder, make_H))
+
+
+ .def("rate", &ldpc_par_mtrx_encoder::rate, D(code, ldpc_par_mtrx_encoder, rate))
+
+
+ .def("set_frame_size",
+ &ldpc_par_mtrx_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, ldpc_par_mtrx_encoder, set_frame_size))
+
+
+ .def("get_output_size",
+ &ldpc_par_mtrx_encoder::get_output_size,
+ D(code, ldpc_par_mtrx_encoder, get_output_size))
+
+
+ .def("get_input_size",
+ &ldpc_par_mtrx_encoder::get_input_size,
+ D(code, ldpc_par_mtrx_encoder, get_input_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_common_python.cc b/gr-fec/python/fec/bindings/polar_common_python.cc
new file mode 100644
index 0000000000..4d80646a86
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_common_python.cc
@@ -0,0 +1,48 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_common.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_common_pydoc.h>
+
+void bind_polar_common(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_common = ::gr::fec::code::polar_common;
+
+
+ py::class_<polar_common, std::shared_ptr<polar_common>>(
+ m_code, "polar_common", D(code, polar_common))
+
+ .def(py::init<int,
+ int,
+ std::vector<int, std::allocator<int>>,
+ std::vector<uint8_t, std::allocator<uint8_t>>>(),
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ py::arg("frozen_bit_values"),
+ D(code, polar_common, polar_common, 0))
+ .def(py::init<gr::fec::code::polar_common const&>(),
+ py::arg("arg0"),
+ D(code, polar_common, polar_common, 1))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_decoder_common_python.cc b/gr-fec/python/fec/bindings/polar_decoder_common_python.cc
new file mode 100644
index 0000000000..683230ac7f
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_decoder_common_python.cc
@@ -0,0 +1,67 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_decoder_common.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_decoder_common_pydoc.h>
+
+void bind_polar_decoder_common(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_decoder_common = ::gr::fec::code::polar_decoder_common;
+
+
+ py::class_<polar_decoder_common,
+ gr::fec::generic_decoder,
+ std::shared_ptr<polar_decoder_common>>(
+ m_code, "polar_decoder_common", D(code, polar_decoder_common))
+
+ // .def(py::init<int,int,std::vector<int, std::allocator<int> >,std::vector<char,
+ // std::allocator<char> >>(), py::arg("block_size"),
+ // py::arg("num_info_bits"),
+ // py::arg("frozen_bit_positions"),
+ // py::arg("frozen_bit_values"),
+ // D(code,polar_decoder_common,polar_decoder_common,0)
+ // )
+ // .def(py::init<gr::fec::code::polar_decoder_common const &>(), py::arg("arg0"),
+ // D(code,polar_decoder_common,polar_decoder_common,1)
+ // )
+
+
+ .def("rate", &polar_decoder_common::rate, D(code, polar_decoder_common, rate))
+
+
+ .def("get_input_size",
+ &polar_decoder_common::get_input_size,
+ D(code, polar_decoder_common, get_input_size))
+
+
+ .def("get_output_size",
+ &polar_decoder_common::get_output_size,
+ D(code, polar_decoder_common, get_output_size))
+
+
+ .def("set_frame_size",
+ &polar_decoder_common::set_frame_size,
+ py::arg("frame_size"),
+ D(code, polar_decoder_common, set_frame_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_decoder_sc_list_python.cc b/gr-fec/python/fec/bindings/polar_decoder_sc_list_python.cc
new file mode 100644
index 0000000000..f81d6cee8b
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_decoder_sc_list_python.cc
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_decoder_sc_list.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_decoder_sc_list_pydoc.h>
+
+void bind_polar_decoder_sc_list(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_decoder_sc_list = ::gr::fec::code::polar_decoder_sc_list;
+
+
+ py::class_<polar_decoder_sc_list,
+ gr::fec::code::polar_decoder_common,
+ std::shared_ptr<polar_decoder_sc_list>>(
+ m_code, "polar_decoder_sc_list", D(code, polar_decoder_sc_list))
+
+ .def_static("make",
+ &polar_decoder_sc_list::make,
+ py::arg("max_list_size"),
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ py::arg("frozen_bit_values"),
+ D(code, polar_decoder_sc_list, make))
+
+
+ .def("generic_work",
+ &polar_decoder_sc_list::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(code, polar_decoder_sc_list, generic_work))
+
+ ;
+
+
+ py::module m_code_polar = m_code.def_submodule("polar");
+
+
+ py::module m_polar = m.def_submodule("polar");
+}
diff --git a/gr-fec/python/fec/bindings/polar_decoder_sc_python.cc b/gr-fec/python/fec/bindings/polar_decoder_sc_python.cc
new file mode 100644
index 0000000000..bb9af86afa
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_decoder_sc_python.cc
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_decoder_sc.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_decoder_sc_pydoc.h>
+
+void bind_polar_decoder_sc(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_decoder_sc = ::gr::fec::code::polar_decoder_sc;
+
+
+ py::class_<polar_decoder_sc,
+ gr::fec::code::polar_decoder_common,
+ std::shared_ptr<polar_decoder_sc>>(
+ m_code, "polar_decoder_sc", D(code, polar_decoder_sc))
+
+ .def_static("make",
+ &polar_decoder_sc::make,
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ py::arg("frozen_bit_values"),
+ D(code, polar_decoder_sc, make))
+
+
+ .def("generic_work",
+ &polar_decoder_sc::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(code, polar_decoder_sc, generic_work))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_decoder_sc_systematic_python.cc b/gr-fec/python/fec/bindings/polar_decoder_sc_systematic_python.cc
new file mode 100644
index 0000000000..08957b28a3
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_decoder_sc_systematic_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_decoder_sc_systematic.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_decoder_sc_systematic_pydoc.h>
+
+void bind_polar_decoder_sc_systematic(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_decoder_sc_systematic = ::gr::fec::code::polar_decoder_sc_systematic;
+
+
+ py::class_<polar_decoder_sc_systematic,
+ gr::fec::code::polar_decoder_common,
+ std::shared_ptr<polar_decoder_sc_systematic>>(
+ m_code, "polar_decoder_sc_systematic", D(code, polar_decoder_sc_systematic))
+
+ .def_static("make",
+ &polar_decoder_sc_systematic::make,
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ D(code, polar_decoder_sc_systematic, make))
+
+
+ .def("generic_work",
+ &polar_decoder_sc_systematic::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(code, polar_decoder_sc_systematic, generic_work))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_encoder_python.cc b/gr-fec/python/fec/bindings/polar_encoder_python.cc
new file mode 100644
index 0000000000..c630ccc325
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_encoder_python.cc
@@ -0,0 +1,80 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_encoder_pydoc.h>
+
+void bind_polar_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_encoder = ::gr::fec::code::polar_encoder;
+
+
+ py::class_<polar_encoder, gr::fec::generic_encoder, std::shared_ptr<polar_encoder>>(
+ m_code, "polar_encoder", D(code, polar_encoder))
+
+ .def_static("make",
+ &polar_encoder::make,
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ py::arg("frozen_bit_values"),
+ py::arg("is_packed") = false,
+ D(code, polar_encoder, make))
+
+
+ .def("generic_work",
+ &polar_encoder::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(code, polar_encoder, generic_work))
+
+
+ .def("rate", &polar_encoder::rate, D(code, polar_encoder, rate))
+
+
+ .def("get_input_size",
+ &polar_encoder::get_input_size,
+ D(code, polar_encoder, get_input_size))
+
+
+ .def("get_output_size",
+ &polar_encoder::get_output_size,
+ D(code, polar_encoder, get_output_size))
+
+
+ .def("set_frame_size",
+ &polar_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, polar_encoder, set_frame_size))
+
+
+ .def("get_input_conversion",
+ &polar_encoder::get_input_conversion,
+ D(code, polar_encoder, get_input_conversion))
+
+
+ .def("get_output_conversion",
+ &polar_encoder::get_output_conversion,
+ D(code, polar_encoder, get_output_conversion))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/polar_encoder_systematic_python.cc b/gr-fec/python/fec/bindings/polar_encoder_systematic_python.cc
new file mode 100644
index 0000000000..c9ba23237c
--- /dev/null
+++ b/gr-fec/python/fec/bindings/polar_encoder_systematic_python.cc
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/polar_encoder_systematic.h>
+// pydoc.h is automatically generated in the build directory
+#include <polar_encoder_systematic_pydoc.h>
+
+void bind_polar_encoder_systematic(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using polar_encoder_systematic = ::gr::fec::code::polar_encoder_systematic;
+
+
+ py::class_<polar_encoder_systematic,
+ gr::fec::generic_encoder,
+ std::shared_ptr<polar_encoder_systematic>>(
+ m_code, "polar_encoder_systematic", D(code, polar_encoder_systematic))
+
+ .def_static("make",
+ &polar_encoder_systematic::make,
+ py::arg("block_size"),
+ py::arg("num_info_bits"),
+ py::arg("frozen_bit_positions"),
+ D(code, polar_encoder_systematic, make))
+
+
+ .def("generic_work",
+ &polar_encoder_systematic::generic_work,
+ py::arg("in_buffer"),
+ py::arg("out_buffer"),
+ D(code, polar_encoder_systematic, generic_work))
+
+
+ .def("rate",
+ &polar_encoder_systematic::rate,
+ D(code, polar_encoder_systematic, rate))
+
+
+ .def("get_input_size",
+ &polar_encoder_systematic::get_input_size,
+ D(code, polar_encoder_systematic, get_input_size))
+
+
+ .def("get_output_size",
+ &polar_encoder_systematic::get_output_size,
+ D(code, polar_encoder_systematic, get_output_size))
+
+
+ .def("set_frame_size",
+ &polar_encoder_systematic::set_frame_size,
+ py::arg("frame_size"),
+ D(code, polar_encoder_systematic, set_frame_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/puncture_bb_python.cc b/gr-fec/python/fec/bindings/puncture_bb_python.cc
new file mode 100644
index 0000000000..5e143e0feb
--- /dev/null
+++ b/gr-fec/python/fec/bindings/puncture_bb_python.cc
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/puncture_bb.h>
+// pydoc.h is automatically generated in the build directory
+#include <puncture_bb_pydoc.h>
+
+void bind_puncture_bb(py::module& m)
+{
+
+ using puncture_bb = ::gr::fec::puncture_bb;
+
+
+ py::class_<puncture_bb, gr::block, gr::basic_block, std::shared_ptr<puncture_bb>>(
+ m, "puncture_bb", D(puncture_bb))
+
+ .def(py::init(&puncture_bb::make),
+ py::arg("puncsize"),
+ py::arg("puncpat"),
+ py::arg("delay") = 0,
+ D(puncture_bb, make))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/puncture_ff_python.cc b/gr-fec/python/fec/bindings/puncture_ff_python.cc
new file mode 100644
index 0000000000..e55eb27549
--- /dev/null
+++ b/gr-fec/python/fec/bindings/puncture_ff_python.cc
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/puncture_ff.h>
+// pydoc.h is automatically generated in the build directory
+#include <puncture_ff_pydoc.h>
+
+void bind_puncture_ff(py::module& m)
+{
+
+ using puncture_ff = ::gr::fec::puncture_ff;
+
+
+ py::class_<puncture_ff, gr::block, gr::basic_block, std::shared_ptr<puncture_ff>>(
+ m, "puncture_ff", D(puncture_ff))
+
+ .def(py::init(&puncture_ff::make),
+ py::arg("puncsize"),
+ py::arg("puncpat"),
+ py::arg("delay"),
+ D(puncture_ff, make))
+
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/python_bindings.cc b/gr-fec/python/fec/bindings/python_bindings.cc
new file mode 100644
index 0000000000..808bc32e43
--- /dev/null
+++ b/gr-fec/python/fec/bindings/python_bindings.cc
@@ -0,0 +1,136 @@
+
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+#include <pybind11/pybind11.h>
+
+#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
+#include <numpy/arrayobject.h>
+
+namespace py = pybind11;
+
+// void bind_alist(py::module&);
+void bind_async_decoder(py::module&);
+void bind_async_encoder(py::module&);
+// void bind_awgn_bp(py::module&);
+void bind_ber_bf(py::module&);
+void bind_cc_common(py::module&);
+void bind_cc_decoder(py::module&);
+void bind_cc_encoder(py::module&);
+void bind_ccsds_encoder(py::module&);
+void bind_cldpc(py::module&);
+void bind_conv_bit_corr_bb(py::module&);
+void bind_decode_ccsds_27_fb(py::module&);
+void bind_decoder(py::module&);
+void bind_depuncture_bb(py::module&);
+void bind_dummy_decoder(py::module&);
+void bind_dummy_encoder(py::module&);
+void bind_encode_ccsds_27_bb(py::module&);
+void bind_encoder(py::module&);
+void bind_fec_mtrx(py::module&);
+void bind_generic_decoder(py::module&);
+void bind_generic_encoder(py::module&);
+void bind_gf2mat(py::module&);
+void bind_gf2vec(py::module&);
+void bind_ldpc_G_matrix(py::module&);
+void bind_ldpc_H_matrix(py::module&);
+void bind_ldpc_bit_flip_decoder(py::module&);
+void bind_ldpc_decoder(py::module&);
+void bind_ldpc_encoder(py::module&);
+void bind_ldpc_gen_mtrx_encoder(py::module&);
+void bind_ldpc_par_mtrx_encoder(py::module&);
+void bind_maxstar(py::module&);
+void bind_polar_common(py::module&);
+void bind_polar_decoder_common(py::module&);
+void bind_polar_decoder_sc(py::module&);
+void bind_polar_decoder_sc_list(py::module&);
+void bind_polar_decoder_sc_systematic(py::module&);
+void bind_polar_encoder(py::module&);
+void bind_polar_encoder_systematic(py::module&);
+void bind_puncture_bb(py::module&);
+void bind_puncture_ff(py::module&);
+void bind_repetition_decoder(py::module&);
+void bind_repetition_encoder(py::module&);
+void bind_rs(py::module&);
+void bind_tagged_decoder(py::module&);
+void bind_tagged_encoder(py::module&);
+// void bind_tpc_common(py::module&);
+void bind_tpc_decoder(py::module&);
+void bind_tpc_encoder(py::module&);
+// void bind_viterbi(py::module&);
+
+// We need this hack because import_array() returns NULL
+// for newer Python versions.
+// This function is also necessary because it ensures access to the C API
+// and removes a warning.
+void* init_numpy()
+{
+ import_array();
+ return NULL;
+}
+
+PYBIND11_MODULE(fec_python, m)
+{
+ // Initialize the numpy C API
+ // (otherwise we will see segmentation faults)
+ init_numpy();
+
+ // Allow access to base block methods
+ py::module::import("gnuradio.gr");
+
+ bind_generic_decoder(m);
+ bind_generic_encoder(m);
+ // bind_alist(m);
+ bind_async_decoder(m);
+ bind_async_encoder(m);
+ // bind_awgn_bp(m);
+ bind_ber_bf(m);
+ bind_cc_common(m);
+ bind_cc_decoder(m);
+ bind_cc_encoder(m);
+ bind_decoder(m);
+ bind_encoder(m);
+ bind_ccsds_encoder(m);
+ // bind_cldpc(m);
+ bind_conv_bit_corr_bb(m);
+ bind_decode_ccsds_27_fb(m);
+ bind_depuncture_bb(m);
+ bind_dummy_decoder(m);
+ bind_dummy_encoder(m);
+ bind_encode_ccsds_27_bb(m);
+ bind_fec_mtrx(m);
+ // bind_gf2mat(m);
+ // bind_gf2vec(m);
+ bind_ldpc_G_matrix(m);
+ bind_ldpc_H_matrix(m);
+ bind_ldpc_bit_flip_decoder(m);
+ bind_ldpc_decoder(m);
+ bind_ldpc_encoder(m);
+ bind_ldpc_gen_mtrx_encoder(m);
+ bind_ldpc_par_mtrx_encoder(m);
+ // bind_maxstar(m);
+ bind_polar_common(m);
+ bind_polar_decoder_common(m);
+ bind_polar_decoder_sc(m);
+ bind_polar_decoder_sc_list(m);
+ bind_polar_decoder_sc_systematic(m);
+ bind_polar_encoder(m);
+ bind_polar_encoder_systematic(m);
+ bind_puncture_bb(m);
+ bind_puncture_ff(m);
+ bind_repetition_decoder(m);
+ bind_repetition_encoder(m);
+ // bind_rs(m);
+ bind_tagged_decoder(m);
+ bind_tagged_encoder(m);
+ // bind_tpc_common(m);
+ bind_tpc_decoder(m);
+ bind_tpc_encoder(m);
+ // bind_viterbi(m);
+}
diff --git a/gr-fec/python/fec/bindings/repetition_decoder_python.cc b/gr-fec/python/fec/bindings/repetition_decoder_python.cc
new file mode 100644
index 0000000000..65bf20361f
--- /dev/null
+++ b/gr-fec/python/fec/bindings/repetition_decoder_python.cc
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/repetition_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <repetition_decoder_pydoc.h>
+
+void bind_repetition_decoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using repetition_decoder = ::gr::fec::code::repetition_decoder;
+
+
+ py::class_<repetition_decoder,
+ gr::fec::generic_decoder,
+ std::shared_ptr<repetition_decoder>>(
+ m_code, "repetition_decoder", D(code, repetition_decoder))
+
+ .def_static("make",
+ &repetition_decoder::make,
+ py::arg("frame_size"),
+ py::arg("rep"),
+ py::arg("ap_prob") = 0.5,
+ D(code, repetition_decoder, make))
+
+
+ .def("set_frame_size",
+ &repetition_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, repetition_decoder, set_frame_size))
+
+
+ .def("rate", &repetition_decoder::rate, D(code, repetition_decoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/repetition_encoder_python.cc b/gr-fec/python/fec/bindings/repetition_encoder_python.cc
new file mode 100644
index 0000000000..6892a02f16
--- /dev/null
+++ b/gr-fec/python/fec/bindings/repetition_encoder_python.cc
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/repetition_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <repetition_encoder_pydoc.h>
+
+void bind_repetition_encoder(py::module& m)
+{
+
+
+ py::module m_code = m.def_submodule("code");
+
+ using repetition_encoder = ::gr::fec::code::repetition_encoder;
+
+
+ py::class_<repetition_encoder,
+ gr::fec::generic_encoder,
+ std::shared_ptr<repetition_encoder>>(
+ m_code, "repetition_encoder", D(code, repetition_encoder))
+
+ .def_static("make",
+ &repetition_encoder::make,
+ py::arg("frame_size"),
+ py::arg("rep"),
+ D(code, repetition_encoder, make))
+
+
+ .def("set_frame_size",
+ &repetition_encoder::set_frame_size,
+ py::arg("frame_size"),
+ D(code, repetition_encoder, set_frame_size))
+
+
+ .def("rate", &repetition_encoder::rate, D(code, repetition_encoder, rate))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/tagged_decoder_python.cc b/gr-fec/python/fec/bindings/tagged_decoder_python.cc
new file mode 100644
index 0000000000..5e79653938
--- /dev/null
+++ b/gr-fec/python/fec/bindings/tagged_decoder_python.cc
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/tagged_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <tagged_decoder_pydoc.h>
+
+void bind_tagged_decoder(py::module& m)
+{
+
+ using tagged_decoder = ::gr::fec::tagged_decoder;
+
+
+ py::class_<tagged_decoder,
+ gr::tagged_stream_block,
+ gr::block,
+ gr::basic_block,
+ std::shared_ptr<tagged_decoder>>(m, "tagged_decoder", D(tagged_decoder))
+
+ .def(py::init(&tagged_decoder::make),
+ py::arg("my_decoder"),
+ py::arg("input_item_size"),
+ py::arg("output_item_size"),
+ py::arg("lengthtagname") = "packet_len",
+ py::arg("mtu") = 1500,
+ D(tagged_decoder, make))
+
+
+ .def("work",
+ &tagged_decoder::work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(tagged_decoder, work))
+
+
+ .def("calculate_output_stream_length",
+ &tagged_decoder::calculate_output_stream_length,
+ py::arg("ninput_items"),
+ D(tagged_decoder, calculate_output_stream_length))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/tagged_encoder_python.cc b/gr-fec/python/fec/bindings/tagged_encoder_python.cc
new file mode 100644
index 0000000000..1478e825d4
--- /dev/null
+++ b/gr-fec/python/fec/bindings/tagged_encoder_python.cc
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/tagged_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <tagged_encoder_pydoc.h>
+
+void bind_tagged_encoder(py::module& m)
+{
+
+ using tagged_encoder = ::gr::fec::tagged_encoder;
+
+
+ py::class_<tagged_encoder,
+ gr::tagged_stream_block,
+ gr::block,
+ gr::basic_block,
+ std::shared_ptr<tagged_encoder>>(m, "tagged_encoder", D(tagged_encoder))
+
+ .def(py::init(&tagged_encoder::make),
+ py::arg("my_encoder"),
+ py::arg("input_item_size"),
+ py::arg("output_item_size"),
+ py::arg("lengthtagname") = "packet_len",
+ py::arg("mtu") = 1500,
+ D(tagged_encoder, make))
+
+
+ .def("work",
+ &tagged_encoder::work,
+ py::arg("noutput_items"),
+ py::arg("ninput_items"),
+ py::arg("input_items"),
+ py::arg("output_items"),
+ D(tagged_encoder, work))
+
+
+ .def("calculate_output_stream_length",
+ &tagged_encoder::calculate_output_stream_length,
+ py::arg("ninput_items"),
+ D(tagged_encoder, calculate_output_stream_length))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/tpc_common_python.cc b/gr-fec/python/fec/bindings/tpc_common_python.cc
new file mode 100644
index 0000000000..112c5803b5
--- /dev/null
+++ b/gr-fec/python/fec/bindings/tpc_common_python.cc
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/tpc_common.h>
+// pydoc.h is automatically generated in the build directory
+#include <tpc_common_pydoc.h>
+
+void bind_tpc_common(py::module& m)
+{
+
+ using tpc_common = ::gr::fec::tpc_common;
+
+
+ py::class_<tpc_common, std::shared_ptr<tpc_common>>(m, "tpc_common", D(tpc_common))
+
+ .def_static("parity_counter",
+ &tpc_common::parity_counter,
+ py::arg("symbol"),
+ py::arg("length"),
+ D(tpc_common, parity_counter))
+
+
+ .def_static("rsc_enc_bit",
+ &tpc_common::rsc_enc_bit,
+ py::arg("input"),
+ py::arg("state_in"),
+ py::arg("g"),
+ py::arg("KK"),
+ py::arg("nn"),
+ py::arg("output"),
+ py::arg("nextStates"),
+ D(tpc_common, rsc_enc_bit))
+
+
+ .def_static("precomputeStateTransitionMatrix_RSCPoly",
+ &tpc_common::precomputeStateTransitionMatrix_RSCPoly,
+ py::arg("numStates"),
+ py::arg("g"),
+ py::arg("KK"),
+ py::arg("nn"),
+ py::arg("output"),
+ py::arg("nextStates"),
+ D(tpc_common, precomputeStateTransitionMatrix_RSCPoly))
+
+
+ .def_static("rsc_tail",
+ &tpc_common::rsc_tail,
+ py::arg("tail_p"),
+ py::arg("g"),
+ py::arg("max_states"),
+ py::arg("mm"),
+ D(tpc_common, rsc_tail))
+
+
+ .def_static("itob",
+ &tpc_common::itob,
+ py::arg("binVec"),
+ py::arg("symbol"),
+ py::arg("length"),
+ D(tpc_common, itob))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/tpc_decoder_python.cc b/gr-fec/python/fec/bindings/tpc_decoder_python.cc
new file mode 100644
index 0000000000..27a4266c72
--- /dev/null
+++ b/gr-fec/python/fec/bindings/tpc_decoder_python.cc
@@ -0,0 +1,53 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/tpc_decoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <tpc_decoder_pydoc.h>
+
+void bind_tpc_decoder(py::module& m)
+{
+
+ using tpc_decoder = ::gr::fec::tpc_decoder;
+
+
+ py::class_<tpc_decoder, gr::fec::generic_decoder, std::shared_ptr<tpc_decoder>>(
+ m, "tpc_decoder", D(tpc_decoder))
+
+ .def_static("make",
+ &tpc_decoder::make,
+ py::arg("row_poly"),
+ py::arg("col_poly"),
+ py::arg("krow"),
+ py::arg("kcol"),
+ py::arg("bval"),
+ py::arg("qval"),
+ py::arg("max_iter"),
+ py::arg("decoder_type"),
+ D(tpc_decoder, make))
+
+
+ .def("rate", &tpc_decoder::rate, D(tpc_decoder, rate))
+
+
+ .def("set_frame_size",
+ &tpc_decoder::set_frame_size,
+ py::arg("frame_size"),
+ D(tpc_decoder, set_frame_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/tpc_encoder_python.cc b/gr-fec/python/fec/bindings/tpc_encoder_python.cc
new file mode 100644
index 0000000000..61b4d893ee
--- /dev/null
+++ b/gr-fec/python/fec/bindings/tpc_encoder_python.cc
@@ -0,0 +1,51 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/tpc_encoder.h>
+// pydoc.h is automatically generated in the build directory
+#include <tpc_encoder_pydoc.h>
+
+void bind_tpc_encoder(py::module& m)
+{
+
+ using tpc_encoder = ::gr::fec::tpc_encoder;
+
+
+ py::class_<tpc_encoder, gr::fec::generic_encoder, std::shared_ptr<tpc_encoder>>(
+ m, "tpc_encoder", D(tpc_encoder))
+
+ .def_static("make",
+ &tpc_encoder::make,
+ py::arg("row_poly"),
+ py::arg("col_poly"),
+ py::arg("krow"),
+ py::arg("kcol"),
+ py::arg("bval"),
+ py::arg("qval"),
+ D(tpc_encoder, make))
+
+
+ .def("rate", &tpc_encoder::rate, D(tpc_encoder, rate))
+
+
+ .def("set_frame_size",
+ &tpc_encoder::set_frame_size,
+ py::arg("arg0"),
+ D(tpc_encoder, set_frame_size))
+
+ ;
+}
diff --git a/gr-fec/python/fec/bindings/viterbi_python.cc b/gr-fec/python/fec/bindings/viterbi_python.cc
new file mode 100644
index 0000000000..8917f9e467
--- /dev/null
+++ b/gr-fec/python/fec/bindings/viterbi_python.cc
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2020 Free Software Foundation, Inc.
+ *
+ * This file is part of GNU Radio
+ *
+ * SPDX-License-Identifier: GPL-3.0-or-later
+ *
+ */
+
+/* This file is automatically generated using bindtool */
+
+#include <pybind11/complex.h>
+#include <pybind11/pybind11.h>
+#include <pybind11/stl.h>
+
+namespace py = pybind11;
+
+#include <gnuradio/fec/viterbi.h>
+// pydoc.h is automatically generated in the build directory
+#include <viterbi_pydoc.h>
+
+void bind_viterbi(py::module& m)
+{
+
+ using viterbi_state = ::gr::fec::viterbi_state;
+
+
+ py::class_<viterbi_state, std::shared_ptr<viterbi_state>>(
+ m, "viterbi_state", D(viterbi_state))
+
+ .def(py::init<>(), D(viterbi_state, viterbi_state, 0))
+ .def(py::init<gr::fec::viterbi_state const&>(),
+ py::arg("arg0"),
+ D(viterbi_state, viterbi_state, 1))
+
+ ;
+
+
+ m.def("gen_met",
+ &::gr::fec::gen_met,
+ py::arg("mettab"),
+ py::arg("amp"),
+ py::arg("esn0"),
+ py::arg("bias"),
+ py::arg("scale"),
+ D(gen_met));
+
+
+ m.def("encode",
+ &::gr::fec::encode,
+ py::arg("symbols"),
+ py::arg("data"),
+ py::arg("nbytes"),
+ py::arg("encstate"),
+ D(encode));
+
+
+ m.def("viterbi_chunks_init",
+ &::gr::fec::viterbi_chunks_init,
+ py::arg("state"),
+ D(viterbi_chunks_init));
+
+
+ m.def("viterbi_butterfly2",
+ &::gr::fec::viterbi_butterfly2,
+ py::arg("symbols"),
+ py::arg("mettab"),
+ py::arg("state0"),
+ py::arg("state1"),
+ D(viterbi_butterfly2));
+
+
+ m.def("viterbi_get_output",
+ &::gr::fec::viterbi_get_output,
+ py::arg("state"),
+ py::arg("outbuf"),
+ D(viterbi_get_output));
+}
diff --git a/gr-fec/python/fec/capillary_threaded_decoder.py b/gr-fec/python/fec/capillary_threaded_decoder.py
index 93a53161eb..4878021282 100644
--- a/gr-fec/python/fec/capillary_threaded_decoder.py
+++ b/gr-fec/python/fec/capillary_threaded_decoder.py
@@ -14,7 +14,7 @@ from __future__ import unicode_literals
import math
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
class capillary_threaded_decoder(gr.hier_block2):
diff --git a/gr-fec/python/fec/capillary_threaded_encoder.py b/gr-fec/python/fec/capillary_threaded_encoder.py
index 95d9f32531..4b67280574 100644
--- a/gr-fec/python/fec/capillary_threaded_encoder.py
+++ b/gr-fec/python/fec/capillary_threaded_encoder.py
@@ -14,7 +14,7 @@ from __future__ import unicode_literals
import math
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
class capillary_threaded_encoder(gr.hier_block2):
diff --git a/gr-fec/python/fec/extended_async_encoder.py b/gr-fec/python/fec/extended_async_encoder.py
index 9766c661ed..6390d135e2 100644
--- a/gr-fec/python/fec/extended_async_encoder.py
+++ b/gr-fec/python/fec/extended_async_encoder.py
@@ -16,7 +16,7 @@ import weakref
from gnuradio import gr
-from . import fec_swig as fec
+from . import fec_python as fec
from .bitflip import read_bitlist
diff --git a/gr-fec/python/fec/extended_decoder.py b/gr-fec/python/fec/extended_decoder.py
index 60dd3def3e..9dc8a926ef 100644
--- a/gr-fec/python/fec/extended_decoder.py
+++ b/gr-fec/python/fec/extended_decoder.py
@@ -15,7 +15,7 @@ from __future__ import unicode_literals
from gnuradio import gr, blocks, digital
-from . import fec_swig as fec
+from . import fec_python as fec
from .bitflip import *
from .threaded_decoder import threaded_decoder
diff --git a/gr-fec/python/fec/extended_encoder.py b/gr-fec/python/fec/extended_encoder.py
index 575e6cd438..447a8b3a69 100644
--- a/gr-fec/python/fec/extended_encoder.py
+++ b/gr-fec/python/fec/extended_encoder.py
@@ -13,7 +13,7 @@ from __future__ import unicode_literals
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
from .threaded_encoder import threaded_encoder
from .capillary_threaded_encoder import capillary_threaded_encoder
from .bitflip import read_bitlist
diff --git a/gr-fec/python/fec/extended_tagged_decoder.py b/gr-fec/python/fec/extended_tagged_decoder.py
index 34c65c70cb..a98b76c8c5 100644
--- a/gr-fec/python/fec/extended_tagged_decoder.py
+++ b/gr-fec/python/fec/extended_tagged_decoder.py
@@ -15,7 +15,7 @@ from __future__ import unicode_literals
from gnuradio import gr, blocks, digital
-from . import fec_swig as fec
+from . import fec_python as fec
from .bitflip import *
diff --git a/gr-fec/python/fec/extended_tagged_encoder.py b/gr-fec/python/fec/extended_tagged_encoder.py
index 385eb1b402..3a43c28adc 100644
--- a/gr-fec/python/fec/extended_tagged_encoder.py
+++ b/gr-fec/python/fec/extended_tagged_encoder.py
@@ -14,7 +14,7 @@ from __future__ import unicode_literals
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
from .bitflip import read_bitlist
diff --git a/gr-fec/python/fec/qa_fecapi_dummy.py b/gr-fec/python/fec/qa_fecapi_dummy.py
index df579f53b4..59c6e9732d 100644
--- a/gr-fec/python/fec/qa_fecapi_dummy.py
+++ b/gr-fec/python/fec/qa_fecapi_dummy.py
@@ -14,8 +14,8 @@ import numpy as np
from gnuradio import gr, gr_unittest, blocks
from gnuradio import fec
-from fec import extended_encoder
-from fec import extended_decoder
+from gnuradio.fec import extended_encoder
+from gnuradio.fec import extended_decoder
from _qa_helper import _qa_helper
@@ -218,12 +218,12 @@ class test_fecapi_dummy(gr_unittest.TestCase):
r2 = snk2.data()
r3 = snk3.data()
- data = tuple(data)
- packed_data = tuple(packed_data)
- self.assertTupleEqual(packed_data, r0)
- self.assertTupleEqual(data, r1)
- self.assertTupleEqual(packed_data, r2)
- self.assertTupleEqual(data, r3)
+ data = list(data)
+ packed_data = list(packed_data)
+ self.assertListEqual(packed_data, r0)
+ self.assertListEqual(data, r1)
+ self.assertListEqual(packed_data, r2)
+ self.assertListEqual(data, r3)
if __name__ == '__main__':
diff --git a/gr-fec/python/fec/qa_fecapi_ldpc.py b/gr-fec/python/fec/qa_fecapi_ldpc.py
index d4d209aede..3a702cc609 100644
--- a/gr-fec/python/fec/qa_fecapi_ldpc.py
+++ b/gr-fec/python/fec/qa_fecapi_ldpc.py
@@ -15,8 +15,8 @@ import os
from gnuradio import gr, gr_unittest
from gnuradio import fec
-from fec import extended_encoder
-from fec import extended_decoder
+from gnuradio.fec import extended_encoder
+from gnuradio.fec import extended_decoder
from _qa_helper import _qa_helper
diff --git a/gr-fec/python/fec/qa_polar_decoder_sc.py b/gr-fec/python/fec/qa_polar_decoder_sc.py
index 83943138f8..850fcb182d 100644
--- a/gr-fec/python/fec/qa_polar_decoder_sc.py
+++ b/gr-fec/python/fec/qa_polar_decoder_sc.py
@@ -17,9 +17,9 @@ import numpy as np
from gnuradio import gr, gr_unittest, blocks
from gnuradio import fec
-from fec import extended_decoder
-from fec.polar.encoder import PolarEncoder
-from fec.polar import channel_construction as cc
+from gnuradio.fec import extended_decoder
+from gnuradio.fec.polar.encoder import PolarEncoder
+from gnuradio.fec.polar import channel_construction as cc
# import os
# print('PID:', os.getpid())
diff --git a/gr-fec/python/fec/threaded_decoder.py b/gr-fec/python/fec/threaded_decoder.py
index 76e49aa3a6..750128c0da 100644
--- a/gr-fec/python/fec/threaded_decoder.py
+++ b/gr-fec/python/fec/threaded_decoder.py
@@ -10,7 +10,7 @@
from __future__ import unicode_literals
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
class threaded_decoder(gr.hier_block2):
diff --git a/gr-fec/python/fec/threaded_encoder.py b/gr-fec/python/fec/threaded_encoder.py
index a874b9851f..37cc8981b6 100644
--- a/gr-fec/python/fec/threaded_encoder.py
+++ b/gr-fec/python/fec/threaded_encoder.py
@@ -11,7 +11,7 @@
from __future__ import unicode_literals
from gnuradio import gr, blocks
-from . import fec_swig as fec
+from . import fec_python as fec
class threaded_encoder(gr.hier_block2):