diff options
author | Josh Morman <mormjb@gmail.com> | 2020-06-02 07:23:48 -0400 |
---|---|---|
committer | Josh Morman <mormjb@gmail.com> | 2020-06-04 11:00:08 -0400 |
commit | dd2ca7ef26a6e14f7b98df81dbee0daeeba4bd54 (patch) | |
tree | d0773f0a35166114d8149217318e9dc52e932809 /gr-vocoder/python/vocoder | |
parent | 7842e287b56950ea95e7f1961992b6e2d38ca27f (diff) |
vocoder: add bindings for freedv_api to fix qa
Diffstat (limited to 'gr-vocoder/python/vocoder')
5 files changed, 86 insertions, 10 deletions
diff --git a/gr-vocoder/python/vocoder/bindings/CMakeLists.txt b/gr-vocoder/python/vocoder/bindings/CMakeLists.txt index ad6184c21e..d059dc23fc 100644 --- a/gr-vocoder/python/vocoder/bindings/CMakeLists.txt +++ b/gr-vocoder/python/vocoder/bindings/CMakeLists.txt @@ -17,6 +17,7 @@ pybind11_add_module(vocoder_python ulaw_encode_sb_python.cc) if(LIBCODEC2_FOUND) + target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_FOUND) target_sources(vocoder_python PRIVATE codec2_python.cc codec2_decode_ps_python.cc @@ -25,13 +26,16 @@ if(LIBCODEC2_FOUND) endif(LIBCODEC2_FOUND) if(LIBCODEC2_HAS_FREEDV_API) + target_compile_definitions(vocoder_python PRIVATE LIBCODEC2_HAS_FREEDV_API) target_sources(vocoder_python PRIVATE + freedv_api_python.cc freedv_rx_ss_python.cc freedv_tx_ss_python.cc ) endif(LIBCODEC2_HAS_FREEDV_API) if(LIBGSM_FOUND) + target_compile_definitions(vocoder_python PRIVATE LIBGSM_FOUND) target_sources(vocoder_python PRIVATE gsm_fr_decode_ps_python.cc gsm_fr_encode_sp_python.cc diff --git a/gr-vocoder/python/vocoder/bindings/codec2_python.cc b/gr-vocoder/python/vocoder/bindings/codec2_python.cc index 7c9d960dd2..4625ffa715 100644 --- a/gr-vocoder/python/vocoder/bindings/codec2_python.cc +++ b/gr-vocoder/python/vocoder/bindings/codec2_python.cc @@ -24,12 +24,26 @@ void bind_codec2(py::module& m) using codec2 = ::gr::vocoder::codec2; - - py::class_<codec2, std::shared_ptr<codec2>>(m, "codec2", D(codec2)) - - .def(py::init<>(), D(codec2, codec2, 0)) - .def( - py::init<gr::vocoder::codec2 const&>(), py::arg("arg0"), D(codec2, codec2, 1)) - - ; + py::class_<codec2, std::shared_ptr<codec2>> codec2_class(m, "codec2", D(codec2)); + + py::enum_<gr::vocoder::codec2::bit_rate>(codec2_class, "bit_rate") + .value("MODE_3200", gr::vocoder::codec2::MODE_3200) + .value("MODE_2400", gr::vocoder::codec2::MODE_2400) + .value("MODE_1600", gr::vocoder::codec2::MODE_1600) + .value("MODE_1400", gr::vocoder::codec2::MODE_1400) + .value("MODE_1300", gr::vocoder::codec2::MODE_1300) + .value("MODE_1200", gr::vocoder::codec2::MODE_1200) +#ifdef CODEC2_MODE_700 + .value("MODE_700", gr::vocoder::codec2::MODE_700) +#endif +#ifdef CODEC2_MODE_700B + .value("MODE_700B", gr::vocoder::codec2::MODE_700B) +#endif +#ifdef CODEC2_MODE_700C + .value("MODE_700C", gr::vocoder::codec2::MODE_700C) +#endif +#ifdef CODEC2_MODE_WB + .value("MODE_WB", gr::vocoder::codec2::MODE_WB) +#endif + .export_values(); } diff --git a/gr-vocoder/python/vocoder/bindings/freedv_api_python.cc b/gr-vocoder/python/vocoder/bindings/freedv_api_python.cc new file mode 100644 index 0000000000..ba436f45e9 --- /dev/null +++ b/gr-vocoder/python/vocoder/bindings/freedv_api_python.cc @@ -0,0 +1,56 @@ +/* + * 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/vocoder/freedv_api.h> + +void bind_freedv_api(py::module& m) +{ + using freedv_api = ::gr::vocoder::freedv_api; + + py::class_<freedv_api, std::shared_ptr<freedv_api>> freedv_api_class(m, "freedv_api"); + + py::enum_<gr::vocoder::freedv_api::freedv_modes>(freedv_api_class, "freedv_modes") + +#ifdef FREEDV_MODE_1600 + .value("MODE_1600", gr::vocoder::freedv_api::MODE_1600) +#endif +#ifdef FREEDV_MODE_700 + .value("MODE_700", gr::vocoder::freedv_api::MODE_700) +#endif +#ifdef FREEDV_MODE_700B + .value("MODE_700B", gr::vocoder::freedv_api::MODE_700B) +#endif +#ifdef FREEDV_MODE_2400A + .value("MODE_2400A", gr::vocoder::freedv_api::MODE_2400A) +#endif +#ifdef FREEDV_MODE_2400B + .value("MODE_2400B", gr::vocoder::freedv_api::MODE_2400B) +#endif +#ifdef FREEDV_MODE_800XA + .value("MODE_800XA", gr::vocoder::freedv_api::MODE_800XA) +#endif +#ifdef FREEDV_MODE_700C + .value("MODE_700C", gr::vocoder::freedv_api::MODE_700C) +#endif +#ifdef FREEDV_MODE_700D + .value("MODE_700D", gr::vocoder::freedv_api::MODE_700D) + .value("SYNC_UNSYNC", gr::vocoder::freedv_api::SYNC_UNSYNC) + .value("SYNC_AUTO", gr::vocoder::freedv_api::SYNC_AUTO) + .value("SYNC_MANUAL", gr::vocoder::freedv_api::SYNC_MANUAL) +#endif + .export_values(); +} diff --git a/gr-vocoder/python/vocoder/bindings/python_bindings.cc b/gr-vocoder/python/vocoder/bindings/python_bindings.cc index d98ef6e372..2e2918b88b 100644 --- a/gr-vocoder/python/vocoder/bindings/python_bindings.cc +++ b/gr-vocoder/python/vocoder/bindings/python_bindings.cc @@ -25,6 +25,7 @@ void bind_codec2_encode_sp(py::module&); void bind_cvsd_decode_bs(py::module&); void bind_cvsd_encode_sb(py::module&); #ifdef LIBCODEC2_HAS_FREEDV_API +void bind_freedv_api(py::module&); void bind_freedv_rx_ss(py::module&); void bind_freedv_tx_ss(py::module&); #endif @@ -70,6 +71,7 @@ PYBIND11_MODULE(vocoder_python, m) bind_cvsd_decode_bs(m); bind_cvsd_encode_sb(m); #ifdef LIBCODEC2_HAS_FREEDV_API + bind_freedv_api(m); bind_freedv_rx_ss(m); bind_freedv_tx_ss(m); #endif diff --git a/gr-vocoder/python/vocoder/qa_gsm_full_rate.py b/gr-vocoder/python/vocoder/qa_gsm_full_rate.py index 59b3323eae..9de32111b0 100644 --- a/gr-vocoder/python/vocoder/qa_gsm_full_rate.py +++ b/gr-vocoder/python/vocoder/qa_gsm_full_rate.py @@ -21,7 +21,7 @@ class test_gsm_vocoder (gr_unittest.TestCase): def test001_module_load (self): data = 20*(100,200,300,400,500,600,700,800) - expected_data = (0,0,360,304,256,720,600,504,200,144,128,464, + expected_data = [0,0,360,304,256,720,600,504,200,144,128,464, 376,384,680,576,440,264,176,176,640,520,480, 464,384,288,432,296,328,760,624,504,176,96,96, 416,312,360,808,672,216,104,136,504,376,448, @@ -34,7 +34,7 @@ class test_gsm_vocoder (gr_unittest.TestCase): 144,336,440,520,616,664,304,176,80,536,448,376, 680,600,240,168,112,408,488,472,608,480,240,232, 208,288,480,600,616,520,176,88,184,296,392,584, - 656,552,248,160,144,336,432,512,608,664) + 656,552,248,160,144,336,432,512,608,664] src = blocks.vector_source_s(data) enc = vocoder.gsm_fr_encode_sp() dec = vocoder.gsm_fr_decode_ps() |