diff options
Diffstat (limited to 'mpm/lib')
-rw-r--r-- | mpm/lib/mykonos/ad937x_ctrl.cpp | 16 | ||||
-rw-r--r-- | mpm/lib/mykonos/ad937x_device.cpp | 15 | ||||
-rw-r--r-- | mpm/lib/mykonos/ad937x_device.hpp | 6 | ||||
-rw-r--r-- | mpm/lib/mykonos/config/ad937x_config_t.cpp | 13 | ||||
-rw-r--r-- | mpm/lib/mykonos/config/ad937x_config_t.hpp | 5 |
5 files changed, 50 insertions, 5 deletions
diff --git a/mpm/lib/mykonos/ad937x_ctrl.cpp b/mpm/lib/mykonos/ad937x_ctrl.cpp index 0e76daac0..2594ac920 100644 --- a/mpm/lib/mykonos/ad937x_ctrl.cpp +++ b/mpm/lib/mykonos/ad937x_ctrl.cpp @@ -189,7 +189,23 @@ public: { /* nop */ } + virtual void update_rx_lo_source(uint8_t rx_lo_source){ + std::lock_guard<std::mutex> lock(*spi_mutex); + device.update_rx_lo_source(rx_lo_source); + } + virtual void update_tx_lo_source(uint8_t tx_lo_source){ + std::lock_guard<std::mutex> lock(*spi_mutex); + device.update_tx_lo_source(tx_lo_source); + } + virtual uint8_t get_rx_lo_source(){ + std::lock_guard<std::mutex> lock(*spi_mutex); + return device.get_rx_lo_source(); + } + virtual uint8_t get_tx_lo_source(){ + std::lock_guard<std::mutex> lock(*spi_mutex); + return device.get_tx_lo_source(); + } virtual void begin_initialization() { std::lock_guard<std::mutex> lock(*spi_mutex); diff --git a/mpm/lib/mykonos/ad937x_device.cpp b/mpm/lib/mykonos/ad937x_device.cpp index de3671849..ac7070df4 100644 --- a/mpm/lib/mykonos/ad937x_device.cpp +++ b/mpm/lib/mykonos/ad937x_device.cpp @@ -272,7 +272,20 @@ ad937x_device::ad937x_device( gain_ctrl(gain_pins) { } - +void ad937x_device::update_rx_lo_source(uint8_t rx_lo_source){ + mykonos_config.set_rx_pll_use_external_lo(rx_lo_source); + //TODO: should we re-init after this ? +} +void ad937x_device::update_tx_lo_source(uint8_t tx_lo_source){ + mykonos_config.set_tx_pll_use_external_lo(tx_lo_source); + //TODO: should we re-init after this ? +} +uint8_t ad937x_device::get_rx_lo_source(){ + return mykonos_config.get_rx_pll_use_external_lo(); +} +uint8_t ad937x_device::get_tx_lo_source(){ + return mykonos_config.get_tx_pll_use_external_lo(); +} void ad937x_device::_setup_rf(){ // TODO: add setRfPllLoopFilter here diff --git a/mpm/lib/mykonos/ad937x_device.hpp b/mpm/lib/mykonos/ad937x_device.hpp index 8dae6f2d3..c816680c4 100644 --- a/mpm/lib/mykonos/ad937x_device.hpp +++ b/mpm/lib/mykonos/ad937x_device.hpp @@ -51,7 +51,6 @@ public: mpm::types::regs_iface* iface, mpm::ad937x::gpio::gain_pins_t gain_pins ); - void begin_initialization(); void finish_initialization(); void setup_cal(uint32_t init_cals_mask, uint32_t tracking_cals_mask, uint32_t timeout); @@ -91,7 +90,10 @@ public: void set_enable_gain_pins(uhd::direction_t direction, mpm::ad937x::device::chain_t chain, bool enable); void set_gain_pin_step_sizes(uhd::direction_t direction, mpm::ad937x::device::chain_t chain, double inc_step, double dec_step); - + void update_rx_lo_source(uint8_t rxPllUseExternalLo); + void update_tx_lo_source(uint8_t rxPllUseExternalLo); + uint8_t get_rx_lo_source(); + uint8_t get_tx_lo_source(); const static double MIN_FREQ; const static double MAX_FREQ; const static double MIN_RX_GAIN; diff --git a/mpm/lib/mykonos/config/ad937x_config_t.cpp b/mpm/lib/mykonos/config/ad937x_config_t.cpp index 8a7ca76c3..68d1f27bf 100644 --- a/mpm/lib/mykonos/config/ad937x_config_t.cpp +++ b/mpm/lib/mykonos/config/ad937x_config_t.cpp @@ -83,7 +83,18 @@ ad937x_config_t::ad937x_config_t(spiSettings_t* sps) : device = &_device; } - +void ad937x_config_t::set_rx_pll_use_external_lo(uint8_t val){ + _rx.rxPllUseExternalLo = val; +} +uint8_t ad937x_config_t::get_rx_pll_use_external_lo(){ + return _rx.rxPllUseExternalLo; +} +void ad937x_config_t::set_tx_pll_use_external_lo(uint8_t val){ + _tx.txPllUseExternalLo = val; +} +uint8_t ad937x_config_t::get_tx_pll_use_external_lo(){ + return _tx.txPllUseExternalLo; +} // This function sets up all the pointers in all of our local members that represent the device struct // This function should only be called during construction. void ad937x_config_t::_init_pointers() diff --git a/mpm/lib/mykonos/config/ad937x_config_t.hpp b/mpm/lib/mykonos/config/ad937x_config_t.hpp index 9eba4992f..e44039ebe 100644 --- a/mpm/lib/mykonos/config/ad937x_config_t.hpp +++ b/mpm/lib/mykonos/config/ad937x_config_t.hpp @@ -20,7 +20,6 @@ #include "../adi/t_mykonos.h" #include "ad937x_fir.hpp" #include <boost/noncopyable.hpp> - // Allocates and links the entire mykonos config struct in a single class class ad937x_config_t : public boost::noncopyable { @@ -41,6 +40,10 @@ public: static const int16_t DEFAULT_RX_FIR[DEFAULT_RX_FIR_SIZE]; static const int16_t DEFAULT_OBSRX_FIR[DEFAULT_RX_FIR_SIZE]; static const int16_t DEFAULT_SNIFFER_FIR[DEFAULT_RX_FIR_SIZE]; + void set_rx_pll_use_external_lo(uint8_t val); + uint8_t get_rx_pll_use_external_lo(); + void set_tx_pll_use_external_lo(uint8_t val); + uint8_t get_tx_pll_use_external_lo(); private: // The top level device struct is non-const and contains all other structs, so everything is "public" |