diff options
| author | Samuel O'Brien <sam.obrien@ni.com> | 2020-06-25 15:43:32 -0500 |
|---|---|---|
| committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-07-16 09:59:25 -0500 |
| commit | 919a147afcbecace5107a4d0a4da556cfd56df92 (patch) | |
| tree | c7b5faea5b89069232e7fb9f7cfebe1e495f4bca /host/include | |
| parent | be6491428db599867129733f73e7ce0ce23e05a7 (diff) | |
| download | uhd-919a147afcbecace5107a4d0a4da556cfd56df92.tar.gz uhd-919a147afcbecace5107a4d0a4da556cfd56df92.tar.bz2 uhd-919a147afcbecace5107a4d0a4da556cfd56df92.zip | |
python: Add bindings for C++ CHDR Parser
This commit adds pybind11 glue code for the userland chdr parsing code
introduced in the uhd::utils::chdr namespace. Additionally, it moves
some pybind11 adapter code to a common pybind_adaptors.hpp file which
originally existed in the cal_python.hpp file.
This commit also adds unit tests for the python bindings using a
captured wireshark trace which is located in rfnoc_packets_*.py and some
handwritten packets in hardcoded_packets.py
Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
Diffstat (limited to 'host/include')
| -rw-r--r-- | host/include/uhd/utils/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | host/include/uhd/utils/pybind_adaptors.hpp | 39 |
2 files changed, 40 insertions, 0 deletions
diff --git a/host/include/uhd/utils/CMakeLists.txt b/host/include/uhd/utils/CMakeLists.txt index 08d488771..51d67b824 100644 --- a/host/include/uhd/utils/CMakeLists.txt +++ b/host/include/uhd/utils/CMakeLists.txt @@ -29,6 +29,7 @@ UHD_INSTALL(FILES paths.hpp pimpl.hpp platform.hpp + pybind_adaptors.hpp safe_call.hpp safe_main.hpp scope_exit.hpp diff --git a/host/include/uhd/utils/pybind_adaptors.hpp b/host/include/uhd/utils/pybind_adaptors.hpp new file mode 100644 index 000000000..6b095d198 --- /dev/null +++ b/host/include/uhd/utils/pybind_adaptors.hpp @@ -0,0 +1,39 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#pragma once + +#include <pybind11/pybind11.h> +#include <pybind11/stl.h> + +namespace pybind11 { namespace detail { +template <typename T> +struct type_caster<boost::optional<T>> : optional_caster<boost::optional<T>> +{ +}; +}} // namespace pybind11::detail + +std::vector<uint8_t> pybytes_to_vector(const py::bytes& data) +{ + const std::string data_str = std::string(data); + return std::vector<uint8_t>(data_str.cbegin(), data_str.cend()); +} + +py::bytes vector_to_pybytes(const std::vector<uint8_t>& data) +{ + return py::bytes(std::string(data.cbegin(), data.cend())); +} + +std::vector<uint64_t> pybytes_to_u64_vector(const py::bytes& data) +{ + const std::string data_str = std::string(data); + return std::vector<uint64_t>(data_str.cbegin(), data_str.cend()); +} + +py::bytes u64_vector_to_pybytes(const std::vector<uint64_t>& data) +{ + return py::bytes(std::string(data.cbegin(), data.cend())); +} |
