From 8784cf70df692066f224ddf58d624b148ea98301 Mon Sep 17 00:00:00 2001 From: Nick Foster Date: Wed, 28 Jul 2010 15:40:43 -0700 Subject: ADC gain control works. Separated digital gain and fine gain correction into separate buckets. Changed the rounding policy of gain_group to floor() rather than round(). --- host/lib/usrp/usrp2/codec_impl.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'host/lib/usrp/usrp2/codec_impl.cpp') diff --git a/host/lib/usrp/usrp2/codec_impl.cpp b/host/lib/usrp/usrp2/codec_impl.cpp index 5cc7a47ec..969b5b4b9 100644 --- a/host/lib/usrp/usrp2/codec_impl.cpp +++ b/host/lib/usrp/usrp2/codec_impl.cpp @@ -30,8 +30,9 @@ using namespace boost::assign; //this only applies to USRP2P static const uhd::dict codec_rx_gain_ranges = map_list_of - ("analog", gain_range_t(0, 3.5, float(3.5))) - ("digital", gain_range_t(0, 6.45, float(0.05))); + ("analog", gain_range_t(0, 3.5, 3.5)) + ("digital", gain_range_t(0, 6.0, 0.5)) + ("digital-fine", gain_range_t(0, 0.5, 0.05)); /*********************************************************************** @@ -99,7 +100,7 @@ void usrp2_mboard_impl::rx_codec_set(const wax::obj &key_, const wax::obj &val){ if(_iface->get_hw_rev() < USRP2P_FIRST_HW_REV) UHD_THROW_PROP_SET_ERROR();//this capability is only found in USRP2P gain = val.as(); - this->rx_codec_set_gain(gain, name); //okay. we can either have ONE gain and let codec_ctrl do the sorting between analog/digital gains, or we can have TWO gains and do the priority somewhere else. + this->rx_codec_set_gain(gain, name); return; default: @@ -124,6 +125,10 @@ void usrp2_mboard_impl::rx_codec_set_gain(float gain, const std::string &name){ _codec_ctrl->set_rx_digital_gain(gain); return; } + if(name == "digital-fine") { + _codec_ctrl->set_rx_digital_fine_gain(gain); + return; + } UHD_THROW_PROP_SET_ERROR(); } -- cgit v1.2.3