diff options
Diffstat (limited to 'gr-blocks/python/blocks/bindings/python_bindings.cc')
-rw-r--r-- | gr-blocks/python/blocks/bindings/python_bindings.cc | 361 |
1 files changed, 361 insertions, 0 deletions
diff --git a/gr-blocks/python/blocks/bindings/python_bindings.cc b/gr-blocks/python/blocks/bindings/python_bindings.cc new file mode 100644 index 0000000000..32dd5d657d --- /dev/null +++ b/gr-blocks/python/blocks/bindings/python_bindings.cc @@ -0,0 +1,361 @@ + +/* + * 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_abs_blk(py::module&); +void bind_add_blk(py::module&); +void bind_add_const_bb(py::module&); +void bind_add_const_cc(py::module&); +void bind_add_const_ff(py::module&); +void bind_add_const_ii(py::module&); +void bind_add_const_ss(py::module&); +void bind_add_const_v(py::module&); +void bind_and_blk(py::module&); +void bind_and_const(py::module&); +void bind_annotator_1to1(py::module&); +void bind_annotator_alltoall(py::module&); +void bind_annotator_raw(py::module&); +void bind_argmax(py::module&); +void bind_burst_tagger(py::module&); +void bind_char_to_float(py::module&); +void bind_char_to_short(py::module&); +void bind_check_lfsr_32k_s(py::module&); +void bind_complex_to_arg(py::module&); +void bind_complex_to_float(py::module&); +void bind_complex_to_imag(py::module&); +void bind_complex_to_interleaved_char(py::module&); +void bind_complex_to_interleaved_short(py::module&); +void bind_complex_to_mag(py::module&); +void bind_complex_to_mag_squared(py::module&); +void bind_complex_to_magphase(py::module&); +void bind_complex_to_real(py::module&); +void bind_conjugate_cc(py::module&); +void bind_control_loop(py::module&); +void bind_copy(py::module&); +void bind_correctiq(py::module&); +void bind_correctiq_auto(py::module&); +void bind_correctiq_man(py::module&); +void bind_correctiq_swapiq(py::module&); +void bind_count_bits(py::module&); +// void bind_ctrlport_probe2_b(py::module&); +// void bind_ctrlport_probe2_c(py::module&); +// void bind_ctrlport_probe2_f(py::module&); +// void bind_ctrlport_probe2_i(py::module&); +// void bind_ctrlport_probe2_s(py::module&); +// void bind_ctrlport_probe_c(py::module&); +void bind_deinterleave(py::module&); +void bind_delay(py::module&); +void bind_divide(py::module&); +void bind_endian_swap(py::module&); +void bind_exponentiate_const_cci(py::module&); +void bind_file_descriptor_sink(py::module&); +void bind_file_descriptor_source(py::module&); +void bind_file_meta_sink(py::module&); +void bind_file_meta_source(py::module&); +void bind_file_sink(py::module&); +void bind_file_sink_base(py::module&); +void bind_file_source(py::module&); +void bind_float_to_char(py::module&); +void bind_float_to_complex(py::module&); +void bind_float_to_int(py::module&); +void bind_float_to_short(py::module&); +void bind_float_to_uchar(py::module&); +void bind_head(py::module&); +void bind_int_to_float(py::module&); +void bind_integrate(py::module&); +void bind_interleave(py::module&); +void bind_interleaved_char_to_complex(py::module&); +void bind_interleaved_short_to_complex(py::module&); +void bind_keep_m_in_n(py::module&); +void bind_keep_one_in_n(py::module&); +void bind_lfsr_15_1_0(py::module&); +void bind_lfsr_32k(py::module&); +void bind_lfsr_32k_source_s(py::module&); +// void bind_log2_const(py::module&); +void bind_magphase_to_complex(py::module&); +void bind_max_blk(py::module&); +void bind_message_debug(py::module&); +void bind_message_strobe(py::module&); +void bind_message_strobe_random(py::module&); +void bind_min_blk(py::module&); +void bind_moving_average(py::module&); +void bind_multiply(py::module&); +void bind_multiply_by_tag_value_cc(py::module&); +void bind_multiply_conjugate_cc(py::module&); +void bind_multiply_const(py::module&); +void bind_multiply_const_v(py::module&); +void bind_multiply_matrix(py::module&); +void bind_mute(py::module&); +void bind_nlog10_ff(py::module&); +void bind_nop(py::module&); +void bind_not_blk(py::module&); +void bind_null_sink(py::module&); +void bind_null_source(py::module&); +void bind_or_blk(py::module&); +// void bind_pack_k_bits(py::module&); +void bind_pack_k_bits_bb(py::module&); +void bind_packed_to_unpacked(py::module&); +void bind_patterned_interleaver(py::module&); +void bind_pdu(py::module&); +void bind_pdu_filter(py::module&); +void bind_pdu_remove(py::module&); +void bind_pdu_set(py::module&); +void bind_pdu_to_tagged_stream(py::module&); +void bind_peak_detector(py::module&); +void bind_peak_detector2_fb(py::module&); +void bind_phase_shift(py::module&); +void bind_plateau_detector_fb(py::module&); +void bind_probe_rate(py::module&); +void bind_probe_signal(py::module&); +void bind_probe_signal_v(py::module&); +void bind_random_pdu(py::module&); +void bind_regenerate_bb(py::module&); +void bind_repack_bits_bb(py::module&); +void bind_repeat(py::module&); +void bind_rms_cf(py::module&); +void bind_rms_ff(py::module&); +void bind_rotator(py::module&); +void bind_rotator_cc(py::module&); +void bind_sample_and_hold(py::module&); +void bind_selector(py::module&); +void bind_short_to_char(py::module&); +void bind_short_to_float(py::module&); +void bind_skiphead(py::module&); +void bind_socket_pdu(py::module&); +void bind_stream_mux(py::module&); +void bind_stream_to_streams(py::module&); +void bind_stream_to_tagged_stream(py::module&); +void bind_stream_to_vector(py::module&); +void bind_streams_to_stream(py::module&); +void bind_streams_to_vector(py::module&); +void bind_stretch_ff(py::module&); +void bind_sub(py::module&); +void bind_tag_debug(py::module&); +void bind_tag_gate(py::module&); +void bind_tag_share(py::module&); +void bind_tagged_file_sink(py::module&); +void bind_tagged_stream_align(py::module&); +void bind_tagged_stream_multiply_length(py::module&); +void bind_tagged_stream_mux(py::module&); +void bind_tagged_stream_to_pdu(py::module&); +void bind_tags_strobe(py::module&); +void bind_tcp_server_sink(py::module&); +void bind_test_tag_variable_rate_ff(py::module&); +void bind_threshold_ff(py::module&); +void bind_throttle(py::module&); +void bind_transcendental(py::module&); +void bind_tsb_vector_sink(py::module&); +void bind_tuntap_pdu(py::module&); +void bind_uchar_to_float(py::module&); +void bind_udp_sink(py::module&); +void bind_udp_source(py::module&); +void bind_unpack_k_bits(py::module&); +void bind_unpack_k_bits_bb(py::module&); +void bind_unpacked_to_packed(py::module&); +void bind_vco_c(py::module&); +void bind_vco_f(py::module&); +void bind_vector_insert(py::module&); +void bind_vector_map(py::module&); +void bind_vector_sink(py::module&); +void bind_vector_source(py::module&); +void bind_vector_to_stream(py::module&); +void bind_vector_to_streams(py::module&); +void bind_wavfile(py::module&); +void bind_wavfile_sink(py::module&); +void bind_wavfile_source(py::module&); +void bind_xor_blk(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(blocks_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_abs_blk(m); + bind_add_blk(m); + bind_add_const_bb(m); + bind_add_const_cc(m); + bind_add_const_ff(m); + bind_add_const_ii(m); + bind_add_const_ss(m); + bind_add_const_v(m); + bind_and_blk(m); + bind_and_const(m); + bind_annotator_1to1(m); + bind_annotator_alltoall(m); + bind_annotator_raw(m); + bind_argmax(m); + bind_burst_tagger(m); + bind_char_to_float(m); + bind_char_to_short(m); + bind_check_lfsr_32k_s(m); + bind_complex_to_arg(m); + bind_complex_to_float(m); + bind_complex_to_imag(m); + bind_complex_to_interleaved_char(m); + bind_complex_to_interleaved_short(m); + bind_complex_to_mag(m); + bind_complex_to_mag_squared(m); + bind_complex_to_magphase(m); + bind_complex_to_real(m); + bind_conjugate_cc(m); + bind_control_loop(m); + bind_copy(m); + bind_correctiq(m); + bind_correctiq_auto(m); + bind_correctiq_man(m); + bind_correctiq_swapiq(m); + bind_count_bits(m); + // bind_ctrlport_probe2_b(m); + // bind_ctrlport_probe2_c(m); + // bind_ctrlport_probe2_f(m); + // bind_ctrlport_probe2_i(m); + // bind_ctrlport_probe2_s(m); + // bind_ctrlport_probe_c(m); + bind_deinterleave(m); + bind_delay(m); + bind_divide(m); + bind_endian_swap(m); + bind_exponentiate_const_cci(m); + bind_file_descriptor_sink(m); + bind_file_descriptor_source(m); + bind_file_meta_sink(m); + bind_file_meta_source(m); + bind_file_sink_base(m); + bind_file_sink(m); + bind_file_source(m); + bind_float_to_char(m); + bind_float_to_complex(m); + bind_float_to_int(m); + bind_float_to_short(m); + bind_float_to_uchar(m); + bind_head(m); + bind_int_to_float(m); + bind_integrate(m); + bind_interleave(m); + bind_interleaved_char_to_complex(m); + bind_interleaved_short_to_complex(m); + bind_keep_m_in_n(m); + bind_keep_one_in_n(m); + bind_lfsr_15_1_0(m); + bind_lfsr_32k(m); + bind_lfsr_32k_source_s(m); + // bind_log2_const(m); + bind_magphase_to_complex(m); + bind_max_blk(m); + bind_message_debug(m); + bind_message_strobe(m); + bind_message_strobe_random(m); + bind_min_blk(m); + bind_moving_average(m); + bind_multiply(m); + bind_multiply_by_tag_value_cc(m); + bind_multiply_conjugate_cc(m); + bind_multiply_const(m); + bind_multiply_const_v(m); + bind_multiply_matrix(m); + bind_mute(m); + bind_nlog10_ff(m); + bind_nop(m); + bind_not_blk(m); + bind_null_sink(m); + bind_null_source(m); + bind_or_blk(m); + // bind_pack_k_bits(m); + bind_pack_k_bits_bb(m); + bind_packed_to_unpacked(m); + bind_patterned_interleaver(m); + bind_pdu(m); + bind_pdu_filter(m); + bind_pdu_remove(m); + bind_pdu_set(m); + bind_pdu_to_tagged_stream(m); + bind_peak_detector(m); + bind_peak_detector2_fb(m); + bind_plateau_detector_fb(m); + bind_probe_rate(m); + bind_probe_signal(m); + bind_probe_signal_v(m); + bind_random_pdu(m); + bind_regenerate_bb(m); + bind_repack_bits_bb(m); + bind_repeat(m); + bind_rms_cf(m); + bind_rms_ff(m); + bind_rotator(m); + bind_rotator_cc(m); + bind_sample_and_hold(m); + bind_selector(m); + bind_short_to_char(m); + bind_short_to_float(m); + bind_skiphead(m); + bind_socket_pdu(m); + bind_stream_mux(m); + bind_stream_to_streams(m); + bind_stream_to_tagged_stream(m); + bind_stream_to_vector(m); + bind_streams_to_stream(m); + bind_streams_to_vector(m); + bind_stretch_ff(m); + bind_sub(m); + bind_tag_debug(m); + bind_tag_gate(m); + bind_tag_share(m); + bind_tagged_file_sink(m); + bind_tagged_stream_align(m); + bind_tagged_stream_multiply_length(m); + bind_tagged_stream_mux(m); + bind_tagged_stream_to_pdu(m); + bind_tags_strobe(m); + bind_tcp_server_sink(m); + bind_test_tag_variable_rate_ff(m); + bind_threshold_ff(m); + bind_throttle(m); + bind_transcendental(m); + bind_tsb_vector_sink(m); + bind_tuntap_pdu(m); + bind_uchar_to_float(m); + bind_udp_sink(m); + bind_udp_source(m); + bind_unpack_k_bits(m); + bind_unpack_k_bits_bb(m); + bind_unpacked_to_packed(m); + bind_vco_c(m); + bind_vco_f(m); + bind_vector_insert(m); + bind_vector_map(m); + bind_vector_sink(m); + bind_vector_source(m); + bind_vector_to_stream(m); + bind_vector_to_streams(m); + bind_wavfile(m); + bind_wavfile_sink(m); + bind_wavfile_source(m); + bind_xor_blk(m); +} |