mpm: ad937x: Add LO lock API

Reviewed-By: Steven Bingler <steven.bingler@ni.com>
Reviewed-By: Trung Tran <trung.tran@ettus.com>
This commit is contained in:
Martin Braun 2017-11-21 16:52:20 -08:00
parent 6701025706
commit 688247e545
2 changed files with 21 additions and 0 deletions

View File

@ -238,6 +238,15 @@ public:
*/
virtual double get_freq(const std::string &which) = 0;
/*! \brief Returns the LO lock status
*
* Note there's only one LO per direction, so the channel doesn't really
* matter here.
* This does not check the PLL lock status for the main clock, the sniffer,
* or the CAL PLL.
*/
virtual bool get_lo_locked(const std::string &which) = 0;
//! set the FIR filter for the frontend which
virtual void set_fir(const std::string &which, int8_t gain, const std::vector<int16_t> & fir) = 0;
@ -300,6 +309,7 @@ void export_mykonos(){
.def("enable_channel", &ad937x_ctrl::enable_channel)
.def("set_freq", &ad937x_ctrl::set_freq)
.def("get_freq", &ad937x_ctrl::get_freq)
.def("get_lo_locked", &ad937x_ctrl::get_lo_locked)
.def("set_fir", &ad937x_ctrl::set_fir)
.def("get_fir", &ad937x_ctrl::get_fir)
.def("get_temperature", &ad937x_ctrl::get_temperature)

View File

@ -417,6 +417,17 @@ public:
return device.get_freq(dir);
}
virtual bool get_lo_locked(const std::string &which)
{
const auto dir = _get_direction_from_antenna(which);
const uint8_t pll_select = (dir == uhd::RX_DIRECTION) ?
ad937x_device::RX_SYNTH :
ad937x_device::TX_SYNTH;
std::lock_guard<std::mutex> lock(*spi_mutex);
return device.get_pll_lock_status(pll_select);
}
virtual void set_fir(const std::string &which, int8_t gain, const std::vector<int16_t> & fir)
{
auto dir = _get_direction_from_antenna(which);