/* * 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_constellation(py::module&); void bind_constellation_decoder_cb(py::module&); void bind_constellation_encoder_bc(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_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_coding_type(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_lfsr(py::module&); void bind_linear_equalizer(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_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"); py::module::import("gnuradio.blocks"); 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_constellation(m); bind_constellation_decoder_cb(m); bind_constellation_encoder_bc(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_async_bb(m); bind_crc32_bb(m); bind_decision_feedback_equalizer(m); bind_descrambler_bb(m); bind_diff_coding_type(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_lfsr(m); bind_linear_equalizer(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_symbol_sync_cc(m); bind_symbol_sync_ff(m); bind_timing_error_detector_type(m); }