diff options
-rw-r--r-- | host/lib/rfnoc/rfnoc_python.hpp | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/host/lib/rfnoc/rfnoc_python.hpp b/host/lib/rfnoc/rfnoc_python.hpp index d9c88fa9a..2b0b2df4b 100644 --- a/host/lib/rfnoc/rfnoc_python.hpp +++ b/host/lib/rfnoc/rfnoc_python.hpp @@ -12,6 +12,7 @@ #include <uhd/rfnoc/graph_edge.hpp> #include <uhd/rfnoc/mb_controller.hpp> #include <uhd/rfnoc/noc_block_base.hpp> +#include <uhd/rfnoc/register_iface.hpp> #include <uhd/rfnoc/res_source_info.hpp> #include <uhd/rfnoc_graph.hpp> #include <uhd/transport/adapter_id.hpp> @@ -279,6 +280,140 @@ void export_rfnoc(py::module& m) uhd::property_tree::sptr tree = self->get_tree(); return tree; }) + .def("poke32", + [](noc_block_base::sptr& self, uint32_t addr, uint32_t data) { + self->regs().poke32(addr, data); + }, + py::arg("addr"), + py::arg("data")) + .def("poke32", + [](noc_block_base::sptr& self, + uint32_t addr, + uint32_t data, + uhd::time_spec_t time, + bool ack = false) { self->regs().poke32(addr, data, time, ack); }, + py::arg("addr"), + py::arg("data"), + py::arg("time"), + py::arg("ack") = false) + .def("poke64", + [](noc_block_base::sptr& self, uint32_t addr, uint64_t data) { + self->regs().poke64(addr, data); + }, + py::arg("addr"), + py::arg("data")) + .def("poke64", + [](noc_block_base::sptr& self, + uint32_t addr, + uint32_t data, + uhd::time_spec_t time, + bool ack = false) { self->regs().poke64(addr, data, time, ack); }, + py::arg("addr"), + py::arg("data"), + py::arg("time"), + py::arg("ack") = false) + .def("multi_poke32", + [](noc_block_base::sptr& self, + std::vector<uint32_t> addr, + std::vector<uint32_t> data) { self->regs().multi_poke32(addr, data); }, + py::arg("addr"), + py::arg("data")) + .def("multi_poke32", + [](noc_block_base::sptr& self, + std::vector<uint32_t> addr, + std::vector<uint32_t> data, + uhd::time_spec_t time, + bool ack = false) { self->regs().multi_poke32(addr, data, time, ack); }, + py::arg("addr"), + py::arg("data"), + py::arg("time"), + py::arg("ack") = false) + .def("block_poke32", + [](noc_block_base::sptr& self, + uint32_t first_addr, + std::vector<uint32_t> data) { + self->regs().block_poke32(first_addr, data); + }, + py::arg("first_addr"), + py::arg("data")) + .def("block_poke32", + [](noc_block_base::sptr& self, + uint32_t first_addr, + std::vector<uint32_t> data, + uhd::time_spec_t time, + bool ack = false) { + self->regs().block_poke32(first_addr, data, time, ack); + }, + py::arg("first_addr"), + py::arg("data"), + py::arg("time"), + py::arg("ack") = false) + .def("peek32", + [](noc_block_base::sptr& self, uint32_t addr) { + return self->regs().peek32(addr); + }, + py::arg("addr")) + .def("peek32", + [](noc_block_base::sptr& self, uint32_t addr, uhd::time_spec_t time) { + return self->regs().peek32(addr, time); + }, + py::arg("addr"), + py::arg("time")) + .def("peek64", + [](noc_block_base::sptr& self, uint32_t addr) { + return self->regs().peek64(addr); + }, + py::arg("addr")) + .def("peek64", + [](noc_block_base::sptr& self, uint32_t addr, uhd::time_spec_t time) { + return self->regs().peek64(addr, time); + }, + py::arg("addr"), + py::arg("time")) + .def("block_peek32", + [](noc_block_base::sptr& self, uint32_t first_addr, size_t length) { + return self->regs().block_peek32(first_addr, length); + }, + py::arg("first_addr"), + py::arg("length")) + .def("block_peek32", + [](noc_block_base::sptr& self, + uint32_t first_addr, + size_t length, + uhd::time_spec_t time) { + return self->regs().block_peek32(first_addr, length, time); + }, + py::arg("first_addr"), + py::arg("length"), + py::arg("time")) + .def("poll32", + [](noc_block_base::sptr& self, + uint32_t addr, + uint32_t data, + uint32_t mask, + uhd::time_spec_t timeout) { + return self->regs().poll32(addr, data, mask, timeout); + }, + py::arg("addr"), + py::arg("data"), + py::arg("mask"), + py::arg("timeout")) + .def("poll32", + [](noc_block_base::sptr& self, + uint32_t addr, + uint32_t data, + uint32_t mask, + uhd::time_spec_t timeout, + uhd::time_spec_t time, + bool ack = false) { + return self->regs().poll32(addr, data, mask, timeout, time, ack); + }, + py::arg("addr"), + py::arg("data"), + py::arg("mask"), + py::arg("timeout"), + py::arg("time"), + py::arg("ack") = false) .def("__repr__", [](noc_block_base::sptr& self) { return "<NocBlock for block ID '" + self->get_unique_id() + "'>"; |