aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'mpm/lib')
-rw-r--r--mpm/lib/mykonos/ad937x_ctrl.cpp16
-rw-r--r--mpm/lib/mykonos/ad937x_device.cpp15
-rw-r--r--mpm/lib/mykonos/ad937x_device.hpp6
-rw-r--r--mpm/lib/mykonos/config/ad937x_config_t.cpp13
-rw-r--r--mpm/lib/mykonos/config/ad937x_config_t.hpp5
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"