diff options
| author | Josh Blum <josh@joshknows.com> | 2010-06-17 16:48:14 -0700 | 
|---|---|---|
| committer | Josh Blum <josh@joshknows.com> | 2010-06-17 16:48:14 -0700 | 
| commit | 9d59ce56526d827839de6df1b922f7ed1608e94e (patch) | |
| tree | 6f3d0205241fba208d2eb14f73001021376182b5 /host | |
| parent | c554cefcab4707331ed23c9cf7567c3104a529bf (diff) | |
| download | uhd-9d59ce56526d827839de6df1b922f7ed1608e94e.tar.gz uhd-9d59ce56526d827839de6df1b922f7ed1608e94e.tar.bz2 uhd-9d59ce56526d827839de6df1b922f7ed1608e94e.zip | |
uhd: added enums for aux adc and dac, usrp2: implemented enums in db iface
Diffstat (limited to 'host')
| -rw-r--r-- | host/include/uhd/usrp/dboard_iface.hpp | 22 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_rfx.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_wbx.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/dboard/db_xcvr2450.cpp | 2 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/dboard_iface.cpp | 32 | 
5 files changed, 38 insertions, 22 deletions
| diff --git a/host/include/uhd/usrp/dboard_iface.hpp b/host/include/uhd/usrp/dboard_iface.hpp index edbd6c967..caf1e6ee6 100644 --- a/host/include/uhd/usrp/dboard_iface.hpp +++ b/host/include/uhd/usrp/dboard_iface.hpp @@ -36,13 +36,13 @@ class UHD_API dboard_iface{  public:      typedef boost::shared_ptr<dboard_iface> sptr; -    //tells the host which unit to use +    //! tells the host which unit to use      enum unit_t{          UNIT_RX = 'r',          UNIT_TX = 't'      }; -    //possible atr registers +    //! possible atr registers      enum atr_reg_t{          ATR_REG_IDLE        = 'i',          ATR_REG_TX_ONLY     = 't', @@ -50,6 +50,20 @@ public:          ATR_REG_FULL_DUPLEX = 'f'      }; +    //! aux dac selection enums (per unit) +    enum aux_dac_t{ +        AUX_DAC_A = 'a', +        AUX_DAC_B = 'b', +        AUX_DAC_C = 'c', +        AUX_DAC_D = 'd' +    }; + +    //! aux adc selection enums (per unit) +    enum aux_adc_t{ +        AUX_ADC_A = 'a', +        AUX_ADC_B = 'b' +    }; +      /*!       * Write to an aux dac.       * @@ -57,7 +71,7 @@ public:       * \param which_dac the dac index 0, 1, 2, 3...       * \param value the value in volts       */ -    virtual void write_aux_dac(unit_t unit, int which_dac, float value) = 0; +    virtual void write_aux_dac(unit_t unit, aux_dac_t which_dac, float value) = 0;      /*!       * Read from an aux adc. @@ -66,7 +80,7 @@ public:       * \param which_adc the adc index 0, 1, 2, 3...       * \return the value in volts       */ -    virtual float read_aux_adc(unit_t unit, int which_adc) = 0; +    virtual float read_aux_adc(unit_t unit, aux_adc_t which_adc) = 0;      /*!       * Set a daughterboard output pin control source. diff --git a/host/lib/usrp/dboard/db_rfx.cpp b/host/lib/usrp/dboard/db_rfx.cpp index 2585dfa8d..7f2275b07 100644 --- a/host/lib/usrp/dboard/db_rfx.cpp +++ b/host/lib/usrp/dboard/db_rfx.cpp @@ -257,7 +257,7 @@ void rfx_xcvr::set_rx_gain(float gain, const std::string &name){          _rx_gains[name] = gain;          //write the new voltage to the aux dac -        this->get_iface()->write_aux_dac(dboard_iface::UNIT_RX, 0, dac_volts); +        this->get_iface()->write_aux_dac(dboard_iface::UNIT_RX, dboard_iface::AUX_DAC_A, dac_volts);      }      else UHD_THROW_INVALID_CODE_PATH();  } diff --git a/host/lib/usrp/dboard/db_wbx.cpp b/host/lib/usrp/dboard/db_wbx.cpp index 95dcb3802..aa5daf9a3 100644 --- a/host/lib/usrp/dboard/db_wbx.cpp +++ b/host/lib/usrp/dboard/db_wbx.cpp @@ -246,7 +246,7 @@ void wbx_xcvr::set_tx_gain(float gain, const std::string &name){          _tx_gains[name] = gain;          //write the new voltage to the aux dac -        this->get_iface()->write_aux_dac(dboard_iface::UNIT_TX, 0, dac_volts); +        this->get_iface()->write_aux_dac(dboard_iface::UNIT_TX, dboard_iface::AUX_DAC_A, dac_volts);      }      else UHD_THROW_INVALID_CODE_PATH();  } diff --git a/host/lib/usrp/dboard/db_xcvr2450.cpp b/host/lib/usrp/dboard/db_xcvr2450.cpp index 974a378bd..d83781965 100644 --- a/host/lib/usrp/dboard/db_xcvr2450.cpp +++ b/host/lib/usrp/dboard/db_xcvr2450.cpp @@ -144,7 +144,7 @@ private:          static const float min_v = float(0.5), max_v = float(2.5);          static const float rssi_dyn_range = 60;          //calculate the rssi from the voltage -        float voltage = this->get_iface()->read_aux_adc(dboard_iface::UNIT_RX, 1); +        float voltage = this->get_iface()->read_aux_adc(dboard_iface::UNIT_RX, dboard_iface::AUX_ADC_B);          return rssi_dyn_range*(voltage - min_v)/(max_v - min_v);      }  }; diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp index faebf698b..0d63cefd4 100644 --- a/host/lib/usrp/usrp2/dboard_iface.cpp +++ b/host/lib/usrp/usrp2/dboard_iface.cpp @@ -36,8 +36,8 @@ public:      usrp2_dboard_iface(usrp2_iface::sptr iface, usrp2_clock_ctrl::sptr clock_ctrl);      ~usrp2_dboard_iface(void); -    void write_aux_dac(unit_t, int, float); -    float read_aux_adc(unit_t, int); +    void write_aux_dac(unit_t, aux_dac_t, float); +    float read_aux_adc(unit_t, aux_adc_t);      void set_pin_ctrl(unit_t, boost::uint16_t);      void set_atr_reg(unit_t, atr_reg_t, boost::uint16_t); @@ -258,31 +258,31 @@ void usrp2_dboard_iface::_write_aux_dac(unit_t unit){      );  } -void usrp2_dboard_iface::write_aux_dac(unit_t unit, int which, float value){ +void usrp2_dboard_iface::write_aux_dac(unit_t unit, aux_dac_t which, float value){      _dac_regs[unit].data = boost::math::iround(4095*value/3.3);      _dac_regs[unit].cmd = ad5623_regs_t::CMD_WR_UP_DAC_CHAN_N;      //standardize on USRP1 interface, A=0, B=1, C=2, D=3      static const uhd::dict< -        unit_t, uhd::dict<int, ad5623_regs_t::addr_t> +        unit_t, uhd::dict<aux_dac_t, ad5623_regs_t::addr_t>      > unit_to_which_to_addr = map_list_of          (UNIT_RX, map_list_of -            (0, ad5623_regs_t::ADDR_DAC_B) -            (1, ad5623_regs_t::ADDR_DAC_A) -            (2, ad5623_regs_t::ADDR_DAC_A) -            (3, ad5623_regs_t::ADDR_DAC_B) +            (AUX_DAC_A, ad5623_regs_t::ADDR_DAC_B) +            (AUX_DAC_B, ad5623_regs_t::ADDR_DAC_A) +            (AUX_DAC_C, ad5623_regs_t::ADDR_DAC_A) +            (AUX_DAC_D, ad5623_regs_t::ADDR_DAC_B)          )          (UNIT_TX, map_list_of -            (0, ad5623_regs_t::ADDR_DAC_A) -            (1, ad5623_regs_t::ADDR_DAC_B) -            (2, ad5623_regs_t::ADDR_DAC_B) -            (3, ad5623_regs_t::ADDR_DAC_A) +            (AUX_DAC_A, ad5623_regs_t::ADDR_DAC_A) +            (AUX_DAC_B, ad5623_regs_t::ADDR_DAC_B) +            (AUX_DAC_C, ad5623_regs_t::ADDR_DAC_B) +            (AUX_DAC_D, ad5623_regs_t::ADDR_DAC_A)          )      ;      _dac_regs[unit].addr = unit_to_which_to_addr[unit][which];      this->_write_aux_dac(unit);  } -float usrp2_dboard_iface::read_aux_adc(unit_t unit, int which){ +float usrp2_dboard_iface::read_aux_adc(unit_t unit, aux_adc_t which){      static const uhd::dict<unit_t, int> unit_to_spi_adc = map_list_of          (UNIT_RX, SPI_SS_RX_ADC)          (UNIT_TX, SPI_SS_TX_ADC) @@ -295,8 +295,10 @@ float usrp2_dboard_iface::read_aux_adc(unit_t unit, int which){      //setup the spi registers      ad7922_regs_t ad7922_regs; -    ad7922_regs.mod = which; //normal mode: mod == chn -    ad7922_regs.chn = which; +    switch(which){ +    case AUX_ADC_A: ad7922_regs.mod = 0; break; +    case AUX_ADC_B: ad7922_regs.mod = 1; break; +    } ad7922_regs.chn = ad7922_regs.mod; //normal mode: mod == chn      //write and read spi      _iface->transact_spi( | 
