diff options
Diffstat (limited to 'host/lib/usrp/common')
| -rw-r--r-- | host/lib/usrp/common/ad9361_ctrl.cpp | 5 | ||||
| -rw-r--r-- | host/lib/usrp/common/ad9361_ctrl.hpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/common/ad9361_driver/ad9361_device.cpp | 14 | ||||
| -rw-r--r-- | host/lib/usrp/common/ad9361_driver/ad9361_device.h | 2 | 
4 files changed, 19 insertions, 4 deletions
diff --git a/host/lib/usrp/common/ad9361_ctrl.cpp b/host/lib/usrp/common/ad9361_ctrl.cpp index 2d9f297b3..54f0fcdbf 100644 --- a/host/lib/usrp/common/ad9361_ctrl.cpp +++ b/host/lib/usrp/common/ad9361_ctrl.cpp @@ -251,6 +251,11 @@ public:          _device.set_filter(direction, chain, filter_name, filter);      } +    void output_digital_test_tone(bool enb) +    { +        _device.digital_test_tone(enb); +    } +  private:      static ad9361_device_t::direction_t _get_direction_from_antenna(const std::string& antenna)      { diff --git a/host/lib/usrp/common/ad9361_ctrl.hpp b/host/lib/usrp/common/ad9361_ctrl.hpp index 044265422..5c438ee9c 100644 --- a/host/lib/usrp/common/ad9361_ctrl.hpp +++ b/host/lib/usrp/common/ad9361_ctrl.hpp @@ -154,6 +154,8 @@ public:      //! Write back a filter      virtual void set_filter(const std::string &which, const std::string &filter_name, const filter_info_base::sptr) = 0; + +    virtual void output_digital_test_tone(bool enb) = 0;  };  }} diff --git a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp index c3bc2d32b..0a8a61575 100644 --- a/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp +++ b/host/lib/usrp/common/ad9361_driver/ad9361_device.cpp @@ -1286,16 +1286,16 @@ double ad9361_device_t::_tune_helper(direction_t direction, const double value)          /* Set band-specific settings. */          if (value < _client_params->get_band_edge(AD9361_RX_BAND0)) { -            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x30; +            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x30; // Port C, balanced          } else if ((value                  >= _client_params->get_band_edge(AD9361_RX_BAND0))                  && (value                          < _client_params->get_band_edge(AD9361_RX_BAND1))) { -            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x0C; +            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x0C; // Port B, balanced          } else if ((value                  >= _client_params->get_band_edge(AD9361_RX_BAND1))                  && (value <= 6e9)) { -            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x03; +            _regs.inputsel = (_regs.inputsel & 0xC0) | 0x03; // Port A, balanced          } else {              throw uhd::runtime_error("[ad9361_device_t] [_tune_helper] INVALID_CODE_PATH");          } @@ -2127,7 +2127,7 @@ double ad9361_device_t::set_gain(direction_t direction, chain_t chain, const dou      }  } -void ad9361_device_t::output_test_tone() +void ad9361_device_t::output_test_tone()  // On RF side!  {      boost::lock_guard<boost::recursive_mutex> lock(_mutex);      /* Output a 480 kHz tone at 800 MHz */ @@ -2137,6 +2137,12 @@ void ad9361_device_t::output_test_tone()      _io_iface->poke8(0x3FE, 0x3F);  } +void ad9361_device_t::digital_test_tone(bool enb) // Digital output +{ +    boost::lock_guard<boost::recursive_mutex> lock(_mutex); +    _io_iface->poke8(0x3F4, 0x02 | (enb ? 0x01 : 0x00)); +} +  void ad9361_device_t::data_port_loopback(const bool loopback_enabled)  {      boost::lock_guard<boost::recursive_mutex> lock(_mutex); diff --git a/host/lib/usrp/common/ad9361_driver/ad9361_device.h b/host/lib/usrp/common/ad9361_driver/ad9361_device.h index efd0f017c..66bc2e8b9 100644 --- a/host/lib/usrp/common/ad9361_driver/ad9361_device.h +++ b/host/lib/usrp/common/ad9361_driver/ad9361_device.h @@ -115,6 +115,8 @@ public:      /* Make AD9361 output its test tone. */      void output_test_tone(); +    void digital_test_tone(bool enb); // Digital output +      /* Turn on/off AD9361's TX port --> RX port loopback. */      void data_port_loopback(const bool loopback_enabled);  | 
