summaryrefslogtreecommitdiff
path: root/gr-digital/python/digital/bindings/python_bindings.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-digital/python/digital/bindings/python_bindings.cc')
-rw-r--r--gr-digital/python/digital/bindings/python_bindings.cc210
1 files changed, 210 insertions, 0 deletions
diff --git a/gr-digital/python/digital/bindings/python_bindings.cc b/gr-digital/python/digital/bindings/python_bindings.cc
new file mode 100644
index 0000000000..e7a0428d4e
--- /dev/null
+++ b/gr-digital/python/digital/bindings/python_bindings.cc
@@ -0,0 +1,210 @@
+
+/*
+ * 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_adaptive_algorithm(py::module&);
+void bind_adaptive_algorithm_cma(py::module&);
+void bind_adaptive_algorithm_lms(py::module&);
+void bind_adaptive_algorithm_nlms(py::module&);
+void bind_additive_scrambler_bb(py::module&);
+void bind_binary_slicer_fb(py::module&);
+void bind_burst_shaper(py::module&);
+void bind_chunks_to_symbols(py::module&);
+void bind_clock_recovery_mm_cc(py::module&);
+void bind_clock_recovery_mm_ff(py::module&);
+void bind_cma_equalizer_cc(py::module&);
+void bind_constellation(py::module&);
+void bind_constellation_decoder_cb(py::module&);
+void bind_constellation_receiver_cb(py::module&);
+void bind_constellation_soft_decoder_cf(py::module&);
+void bind_corr_est_cc(py::module&);
+void bind_correlate_access_code_bb(py::module&);
+void bind_correlate_access_code_bb_ts(py::module&);
+void bind_correlate_access_code_ff_ts(py::module&);
+void bind_correlate_access_code_tag_bb(py::module&);
+void bind_correlate_access_code_tag_ff(py::module&);
+void bind_costas_loop_cc(py::module&);
+void bind_cpmmod_bc(py::module&);
+void bind_crc32(py::module&);
+void bind_crc32_async_bb(py::module&);
+void bind_crc32_bb(py::module&);
+void bind_decision_feedback_equalizer(py::module&);
+void bind_descrambler_bb(py::module&);
+void bind_diff_decoder_bb(py::module&);
+void bind_diff_encoder_bb(py::module&);
+void bind_diff_phasor_cc(py::module&);
+void bind_fll_band_edge_cc(py::module&);
+void bind_framer_sink_1(py::module&);
+void bind_glfsr(py::module&);
+void bind_glfsr_source_b(py::module&);
+void bind_glfsr_source_f(py::module&);
+void bind_hdlc_deframer_bp(py::module&);
+void bind_hdlc_framer_pb(py::module&);
+void bind_header_buffer(py::module&);
+void bind_header_format_base(py::module&);
+void bind_header_format_counter(py::module&);
+void bind_header_format_crc(py::module&);
+void bind_header_format_default(py::module&);
+void bind_header_format_ofdm(py::module&);
+void bind_header_payload_demux(py::module&);
+void bind_interpolating_resampler_type(py::module&);
+void bind_kurtotic_equalizer_cc(py::module&);
+void bind_lfsr(py::module&);
+void bind_linear_equalizer(py::module&);
+void bind_lms_dd_equalizer_cc(py::module&);
+void bind_map_bb(py::module&);
+void bind_meas_evm_cc(py::module&);
+void bind_metric_type(py::module&);
+void bind_modulate_vector(py::module&);
+void bind_mpsk_snr_est(py::module&);
+void bind_mpsk_snr_est_cc(py::module&);
+void bind_msk_timing_recovery_cc(py::module&);
+void bind_ofdm_carrier_allocator_cvc(py::module&);
+void bind_ofdm_chanest_vcvc(py::module&);
+void bind_ofdm_cyclic_prefixer(py::module&);
+void bind_ofdm_equalizer_base(py::module&);
+void bind_ofdm_equalizer_simpledfe(py::module&);
+void bind_ofdm_equalizer_static(py::module&);
+void bind_ofdm_frame_equalizer_vcvc(py::module&);
+void bind_ofdm_serializer_vcc(py::module&);
+void bind_ofdm_sync_sc_cfb(py::module&);
+void bind_packet_header_default(py::module&);
+void bind_packet_header_ofdm(py::module&);
+void bind_packet_headergenerator_bb(py::module&);
+void bind_packet_headerparser_b(py::module&);
+void bind_packet_sink(py::module&);
+void bind_pfb_clock_sync_ccf(py::module&);
+void bind_pfb_clock_sync_fff(py::module&);
+void bind_pn_correlator_cc(py::module&);
+void bind_probe_density_b(py::module&);
+void bind_probe_mpsk_snr_est_c(py::module&);
+void bind_protocol_formatter_async(py::module&);
+void bind_protocol_formatter_bb(py::module&);
+void bind_protocol_parser_b(py::module&);
+void bind_scrambler_bb(py::module&);
+void bind_simple_correlator(py::module&);
+void bind_simple_framer(py::module&);
+void bind_simple_framer_sync(py::module&);
+void bind_symbol_sync_cc(py::module&);
+void bind_symbol_sync_ff(py::module&);
+void bind_timing_error_detector_type(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(digital_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_adaptive_algorithm(m);
+ bind_adaptive_algorithm_cma(m);
+ bind_adaptive_algorithm_lms(m);
+ bind_adaptive_algorithm_nlms(m);
+ bind_additive_scrambler_bb(m);
+ bind_binary_slicer_fb(m);
+ bind_burst_shaper(m);
+ bind_chunks_to_symbols(m);
+ bind_clock_recovery_mm_cc(m);
+ bind_clock_recovery_mm_ff(m);
+ bind_cma_equalizer_cc(m);
+ bind_constellation(m);
+ bind_constellation_decoder_cb(m);
+ bind_constellation_receiver_cb(m);
+ bind_constellation_soft_decoder_cf(m);
+ bind_corr_est_cc(m);
+ bind_correlate_access_code_bb(m);
+ bind_correlate_access_code_bb_ts(m);
+ bind_correlate_access_code_ff_ts(m);
+ bind_correlate_access_code_tag_bb(m);
+ bind_correlate_access_code_tag_ff(m);
+ bind_costas_loop_cc(m);
+ bind_cpmmod_bc(m);
+ bind_crc32(m);
+ bind_crc32_async_bb(m);
+ bind_crc32_bb(m);
+ bind_decision_feedback_equalizer(m);
+ bind_descrambler_bb(m);
+ bind_diff_decoder_bb(m);
+ bind_diff_encoder_bb(m);
+ bind_diff_phasor_cc(m);
+ bind_fll_band_edge_cc(m);
+ bind_framer_sink_1(m);
+ bind_glfsr(m);
+ bind_glfsr_source_b(m);
+ bind_glfsr_source_f(m);
+ bind_hdlc_deframer_bp(m);
+ bind_hdlc_framer_pb(m);
+ bind_header_buffer(m);
+ bind_header_format_base(m);
+ bind_header_format_default(m);
+ bind_header_format_counter(m);
+ bind_header_format_crc(m);
+ bind_header_format_ofdm(m);
+ bind_header_payload_demux(m);
+ bind_interpolating_resampler_type(m);
+ bind_kurtotic_equalizer_cc(m);
+ bind_lfsr(m);
+ bind_linear_equalizer(m);
+ bind_lms_dd_equalizer_cc(m);
+ bind_map_bb(m);
+ bind_meas_evm_cc(m);
+ bind_metric_type(m);
+ bind_modulate_vector(m);
+ bind_mpsk_snr_est(m);
+ bind_mpsk_snr_est_cc(m);
+ bind_msk_timing_recovery_cc(m);
+ bind_ofdm_carrier_allocator_cvc(m);
+ bind_ofdm_chanest_vcvc(m);
+ bind_ofdm_cyclic_prefixer(m);
+ bind_ofdm_equalizer_base(m);
+ bind_ofdm_equalizer_simpledfe(m);
+ bind_ofdm_equalizer_static(m);
+ bind_ofdm_frame_equalizer_vcvc(m);
+ bind_ofdm_serializer_vcc(m);
+ bind_ofdm_sync_sc_cfb(m);
+ bind_packet_header_default(m);
+ bind_packet_header_ofdm(m);
+ bind_packet_headergenerator_bb(m);
+ bind_packet_headerparser_b(m);
+ bind_packet_sink(m);
+ bind_pfb_clock_sync_ccf(m);
+ bind_pfb_clock_sync_fff(m);
+ bind_pn_correlator_cc(m);
+ bind_probe_density_b(m);
+ bind_probe_mpsk_snr_est_c(m);
+ bind_protocol_formatter_async(m);
+ bind_protocol_formatter_bb(m);
+ bind_protocol_parser_b(m);
+ bind_scrambler_bb(m);
+ bind_simple_correlator(m);
+ bind_simple_framer(m);
+ bind_simple_framer_sync(m);
+ bind_symbol_sync_cc(m);
+ bind_symbol_sync_ff(m);
+ bind_timing_error_detector_type(m);
+}