python: Add find() to the Python API

This a mapping of uhd::device::find() into uhd.find() on the Python
side. The uhd::device is intentionally not mapped into Python (prefer
MultiUSRP or RfnocGraph instead), so the namespace is moved up one
level.

Example:
>>> import uhd
>>> # Now print the device args for all found B200s:
>>> for dev_args in uhd.find("type=b200")): print(dev_args.to_string())
This commit is contained in:
Martin Braun 2020-12-04 13:53:34 +01:00 committed by michael-west
parent eaf0062254
commit 60fb5d5f13
5 changed files with 34 additions and 0 deletions

View File

@ -0,0 +1,19 @@
//
// Copyright 2020 Ettus Research, a National Instruments Brand
//
// SPDX-License-Identifier: GPL-3.0-or-later
//
#include <pybind11/complex.h>
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
namespace py = pybind11;
#include "device_python.hpp"
#include <uhd/device.hpp>
void export_device(py::module& m)
{
m.def("find", [](const uhd::device_addr_t& hint) { return uhd::device::find(hint); });
}

View File

@ -0,0 +1,9 @@
//
// Copyright 2020 Ettus Research, a National Instruments Brand
//
// SPDX-License-Identifier: GPL-3.0-or-later
//
#pragma once
void export_device(py::module& m);

View File

@ -32,6 +32,7 @@ execute_process(
add_library(pyuhd SHARED
pyuhd.cpp
${CMAKE_SOURCE_DIR}/lib/property_tree_python.cpp
${CMAKE_SOURCE_DIR}/lib/device_python.cpp
${CMAKE_SOURCE_DIR}/lib/usrp/multi_usrp_python.cpp
)
# python expects extension modules with a particular suffix

View File

@ -14,6 +14,7 @@
namespace py = pybind11;
#include "cal/cal_python.hpp"
#include "device_python.hpp"
#include "property_tree_python.hpp"
#include "rfnoc/ddc_block_control_python.hpp"
#include "rfnoc/duc_block_control_python.hpp"
@ -61,6 +62,9 @@ PYBIND11_MODULE(libpyuhd, m)
// (otherwise we will see segmentation faults)
init_numpy();
// Register uhd::device::find
export_device(m);
// Register paths submodule
auto paths_module = m.def_submodule("paths", "Path Utilities");
export_paths(paths_module);

View File

@ -14,6 +14,7 @@ from . import rfnoc
from . import dsp
from . import chdr
from .libpyuhd.paths import *
from .libpyuhd import find
from .property_tree import PropertyTree