diff options
Diffstat (limited to 'mpm')
-rw-r--r-- | mpm/include/mpm/CMakeLists.txt | 1 | ||||
-rw-r--r-- | mpm/include/mpm/xbar_iface.hpp | 60 | ||||
-rw-r--r-- | mpm/lib/CMakeLists.txt | 1 | ||||
-rw-r--r-- | mpm/lib/xbar_iface.cpp | 52 | ||||
-rw-r--r-- | mpm/python/pyusrp_periphs/e31x/pyusrp_periphs.cpp | 2 | ||||
-rw-r--r-- | mpm/python/pyusrp_periphs/e320/pyusrp_periphs.cpp | 2 | ||||
-rw-r--r-- | mpm/python/pyusrp_periphs/n3xx/pyusrp_periphs.cpp | 2 |
7 files changed, 0 insertions, 120 deletions
diff --git a/mpm/include/mpm/CMakeLists.txt b/mpm/include/mpm/CMakeLists.txt index f3637c913..d4caff1c4 100644 --- a/mpm/include/mpm/CMakeLists.txt +++ b/mpm/include/mpm/CMakeLists.txt @@ -4,7 +4,6 @@ # SPDX-License-Identifier: GPL-3.0-or-later # install(FILES - xbar_iface.hpp exception.hpp DESTINATION ${INCLUDE_DIR}/mpm ) diff --git a/mpm/include/mpm/xbar_iface.hpp b/mpm/include/mpm/xbar_iface.hpp deleted file mode 100644 index bf4399593..000000000 --- a/mpm/include/mpm/xbar_iface.hpp +++ /dev/null @@ -1,60 +0,0 @@ -// -// Copyright 2017 Ettus Research, a National Instruments Company -// Copyright 2019 Ettus Research, a National Instruments Brand -// -// SPDX-License-Identifier: GPL-3.0-or-later -// -#pragma once -#include <boost/noncopyable.hpp> -#include <cstdint> -#include <memory> -#include <mutex> - -namespace mpm { - -/*! - * Crossbar route command - */ -using rfnoc_crossbar_cmd = struct rfnoc_crossbar_cmd -{ - /*! destination address */ - uint8_t dest_addr; - /*! destination port */ - uint8_t dest_port; -}; - -#define RFNCBWROUTIOC _IOW('R', 1, struct rfnoc_crossbar_cmd) -#define RFNCDELROUTIOC _IOW('D', 1, struct rfnoc_crossbar_cmd) - -/*! - * Crossbar interface class holding a crossbar context - */ -class xbar_iface : boost::noncopyable -{ -public: - // use static mutex! lock_guard - using sptr = std::shared_ptr<xbar_iface>; - static sptr make(const std::string& device); - void set_route(uint8_t dst_addr, uint8_t dst_port); - void del_route(uint8_t dst_addr, uint8_t dst_port); - ~xbar_iface(); - xbar_iface(const std::string& device); - -private: - static std::mutex _lock; - int _fd; -}; -} // namespace mpm - - -#ifdef LIBMPM_PYTHON -void export_xbar(py::module& top_module) -{ - auto m = top_module.def_submodule("xbar"); - - py::class_<mpm::xbar_iface, std::shared_ptr<mpm::xbar_iface>>(m, "xbar") - .def(py::init(&mpm::xbar_iface::make)) - .def("set_route", &mpm::xbar_iface::set_route) - .def("del_route", &mpm::xbar_iface::del_route); -} -#endif diff --git a/mpm/lib/CMakeLists.txt b/mpm/lib/CMakeLists.txt index 82a5d8e16..940a23138 100644 --- a/mpm/lib/CMakeLists.txt +++ b/mpm/lib/CMakeLists.txt @@ -20,7 +20,6 @@ endif(ENABLE_MYKONOS) USRP_PERIPHS_ADD_OBJECT(periphs exception.cpp - xbar_iface.cpp ${UHD_HOST_ROOT}/lib/exception.cpp ) diff --git a/mpm/lib/xbar_iface.cpp b/mpm/lib/xbar_iface.cpp deleted file mode 100644 index 05d1e2053..000000000 --- a/mpm/lib/xbar_iface.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// Copyright 2017 Ettus Research, a National Instruments Company -// -// SPDX-License-Identifier: GPL-3.0-or-later -// - -#include "mpm/xbar_iface.hpp" -#include <fcntl.h> -#include <mpm/exception.hpp> -#include <sys/ioctl.h> -#include <boost/format.hpp> - -using namespace mpm; - -std::mutex xbar_iface::_lock; // Initialize lock for all objects - -xbar_iface::xbar_iface(const std::string& device) -{ - _fd = open(device.c_str(), O_RDWR); -} - -xbar_iface::~xbar_iface() -{ - close(_fd); -} - -void xbar_iface::set_route(uint8_t dst_addr, uint8_t dst_port) -{ - std::lock_guard<std::mutex> lock(_lock); - rfnoc_crossbar_cmd cmd = {.dest_addr = dst_addr, .dest_port = dst_port}; - int err = ioctl(_fd, RFNCBWROUTIOC, &cmd); - if (err < 0) { - throw mpm::os_error( - str(boost::format("setting crossbar route failed! Error: %d") % err)); - } -} - -void xbar_iface::del_route(uint8_t dst_addr, uint8_t dst_port) -{ - std::lock_guard<std::mutex> lock(_lock); - rfnoc_crossbar_cmd cmd = {.dest_addr = dst_addr, .dest_port = dst_port}; - int err = ioctl(_fd, RFNCDELROUTIOC, &cmd); - if (err < 0) { - throw mpm::os_error( - str(boost::format("deleting crossbar route failed! Error: %d") % err)); - } -} - -xbar_iface::sptr xbar_iface::make(const std::string& device) -{ - return std::make_shared<xbar_iface>(device); -} diff --git a/mpm/python/pyusrp_periphs/e31x/pyusrp_periphs.cpp b/mpm/python/pyusrp_periphs/e31x/pyusrp_periphs.cpp index b7971407c..ffd32edbf 100644 --- a/mpm/python/pyusrp_periphs/e31x/pyusrp_periphs.cpp +++ b/mpm/python/pyusrp_periphs/e31x/pyusrp_periphs.cpp @@ -18,13 +18,11 @@ PYBIND11_DECLARE_HOLDER_TYPE(T, boost::shared_ptr<T>); #include <mpm/dboards/e31x_db_manager.hpp> #include <mpm/spi/spi_python.hpp> #include <mpm/types/types_python.hpp> -#include <mpm/xbar_iface.hpp> PYBIND11_MODULE(libpyusrp_periphs, m) { export_types(m); export_spi(m); - export_xbar(m); export_catalina(m); export_e31x_db(m); } diff --git a/mpm/python/pyusrp_periphs/e320/pyusrp_periphs.cpp b/mpm/python/pyusrp_periphs/e320/pyusrp_periphs.cpp index 74a3647db..2a3c01064 100644 --- a/mpm/python/pyusrp_periphs/e320/pyusrp_periphs.cpp +++ b/mpm/python/pyusrp_periphs/e320/pyusrp_periphs.cpp @@ -18,13 +18,11 @@ PYBIND11_DECLARE_HOLDER_TYPE(T, boost::shared_ptr<T>); #include <mpm/dboards/neon_manager.hpp> #include <mpm/spi/spi_python.hpp> #include <mpm/types/types_python.hpp> -#include <mpm/xbar_iface.hpp> PYBIND11_MODULE(libpyusrp_periphs, m) { export_types(m); export_spi(m); - export_xbar(m); export_catalina(m); export_neon(m); } diff --git a/mpm/python/pyusrp_periphs/n3xx/pyusrp_periphs.cpp b/mpm/python/pyusrp_periphs/n3xx/pyusrp_periphs.cpp index d4c430f72..4719f486e 100644 --- a/mpm/python/pyusrp_periphs/n3xx/pyusrp_periphs.cpp +++ b/mpm/python/pyusrp_periphs/n3xx/pyusrp_periphs.cpp @@ -19,7 +19,6 @@ PYBIND11_DECLARE_HOLDER_TYPE(T, boost::shared_ptr<T>); #include <mpm/i2c/i2c_python.hpp> #include <mpm/spi/spi_python.hpp> #include <mpm/types/types_python.hpp> -#include <mpm/xbar_iface.hpp> PYBIND11_MODULE(libpyusrp_periphs, m) { @@ -27,6 +26,5 @@ PYBIND11_MODULE(libpyusrp_periphs, m) export_spi(m); export_i2c(m); export_mykonos(m); - export_xbar(m); export_magnesium(m); } |