diff options
author | Martin Braun <martin.braun@ettus.com> | 2019-11-21 16:25:07 -0800 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2019-11-26 12:21:35 -0800 |
commit | 1c3c7bddff19e0e575b9f411fa73bb2429e4fc66 (patch) | |
tree | fc01df365406522799e2f021a71a21a74f9ec1ee /mpm/include | |
parent | 4607c049fa707d9ffced23ddae9f6e79feba095c (diff) | |
download | uhd-1c3c7bddff19e0e575b9f411fa73bb2429e4fc66.tar.gz uhd-1c3c7bddff19e0e575b9f411fa73bb2429e4fc66.tar.bz2 uhd-1c3c7bddff19e0e575b9f411fa73bb2429e4fc66.zip |
mpm: mg: Make set_master_clock_rate() an async call
The ad9371 call set_master_clock_rate() can take a while depending on
the rate change, so make it asynchronous in order not to lock out the
reclaimer loop.
Diffstat (limited to 'mpm/include')
-rw-r--r-- | mpm/include/mpm/ad937x/ad937x_ctrl.hpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/mpm/include/mpm/ad937x/ad937x_ctrl.hpp b/mpm/include/mpm/ad937x/ad937x_ctrl.hpp index cb4d0e060..44e814e60 100644 --- a/mpm/include/mpm/ad937x/ad937x_ctrl.hpp +++ b/mpm/include/mpm/ad937x/ad937x_ctrl.hpp @@ -86,6 +86,7 @@ public: std::future<void> handle_finish_initialization; std::future<void> handle_setup_cal; std::future<double> handle_set_freq; + std::future<void> handle_set_master_clock_rate; /*! \brief make a new AD9371 ctrl object using the specified SPI iface * @@ -283,6 +284,20 @@ void export_mykonos(py::module& top_module) py::class_<ad937x_ctrl, std::shared_ptr<ad937x_ctrl>>(m, "ad937x_ctrl") .def("set_master_clock_rate", &ad937x_ctrl::set_master_clock_rate) + .def("async__set_master_clock_rate", + +[](ad937x_ctrl& self, const double rate) { + self.handle_set_master_clock_rate = std::async(std::launch::async, + [&self, rate]() { self.set_master_clock_rate(rate); }); + }) + .def("await__set_master_clock_rate", + +[](ad937x_ctrl& self) -> bool { + if (self.handle_set_master_clock_rate.wait_for(std::chrono::seconds(0)) + == std::future_status::ready) { + self.handle_set_master_clock_rate.get(); + return true; + } + return false; + }) .def("begin_initialization", &ad937x_ctrl::begin_initialization) .def("async__finish_initialization", +[](ad937x_ctrl& self) { |