diff options
author | Josh Blum <josh@joshknows.com> | 2010-03-21 00:58:34 -0700 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-03-21 00:58:34 -0700 |
commit | d1ecc555e53770f1a5608000352f56f48c36c310 (patch) | |
tree | ccccaac506fa6fe0812fce202121a4ad85d3f752 /host/lib/gain_handler.cpp | |
parent | 26ada5ee709fc4d7e195d19720b467c14368bc05 (diff) | |
download | uhd-d1ecc555e53770f1a5608000352f56f48c36c310.tar.gz uhd-d1ecc555e53770f1a5608000352f56f48c36c310.tar.bz2 uhd-d1ecc555e53770f1a5608000352f56f48c36c310.zip |
Moved typedefs from props.hpp into new file types.hpp.
Created structs to replace range tuples, and clock config struct.
Merged clock config props into one property using config struct.
Added templated dict construction to use the assign::map_list_of.
Added gcc flag to set visibility to hidden and use the api macro.
Diffstat (limited to 'host/lib/gain_handler.cpp')
-rw-r--r-- | host/lib/gain_handler.cpp | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/host/lib/gain_handler.cpp b/host/lib/gain_handler.cpp index 847bc0528..7dd1547cb 100644 --- a/host/lib/gain_handler.cpp +++ b/host/lib/gain_handler.cpp @@ -17,10 +17,12 @@ #include <uhd/gain_handler.hpp> #include <uhd/utils.hpp> +#include <uhd/types.hpp> #include <uhd/props.hpp> #include <boost/assign/list_of.hpp> #include <boost/foreach.hpp> #include <boost/format.hpp> +#include <cmath> #include <vector> using namespace uhd; @@ -99,12 +101,10 @@ gain_t gain_handler_impl::get_overall_gain_val(void){ gain_range_t gain_handler_impl::get_overall_gain_range(void){ gain_t gain_min = 0, gain_max = 0, gain_step = 0; BOOST_FOREACH(std::string name, get_gain_names()){ - gain_t gain_min_tmp, gain_max_tmp, gain_step_tmp; - boost::tie(gain_min_tmp, gain_max_tmp, gain_step_tmp) = \ - get_named_prop<gain_range_t>(_props.range, name); - gain_min += gain_min_tmp; - gain_max += gain_max_tmp; - gain_step = std::max(gain_step, gain_step_tmp); + gain_range_t gain_tmp = get_named_prop<gain_range_t>(_props.range, name); + gain_min += gain_tmp.min; + gain_max += gain_tmp.max; + gain_step = std::max(gain_step, gain_tmp.step); } return gain_range_t(gain_min, gain_max, gain_step); } @@ -150,12 +150,10 @@ bool gain_handler_impl::intercept_set(const wax::obj &key_, const wax::obj &val) //not a wildcard... dont handle (but check name and range) if (name != ""){ assert_has(get_gain_names(), name, "gain name"); - gain_t gain_min, gain_max, gain_step; - boost::tie(gain_min, gain_max, gain_step) = \ - get_named_prop<gain_range_t>(_props.range, name); - if (gain_val > gain_max or gain_val < gain_min) throw std::range_error(str( + gain_range_t gain = get_named_prop<gain_range_t>(_props.range, name); + if (gain_val > gain.max or gain_val < gain.min) throw std::range_error(str( boost::format("A value of %f for gain %s is out of range of (%f, %f)") - % gain_val % name % gain_min % gain_max + % gain_val % name % gain.min % gain.max )); return false; } @@ -163,14 +161,12 @@ bool gain_handler_impl::intercept_set(const wax::obj &key_, const wax::obj &val) //set the overall gain BOOST_FOREACH(std::string name, get_gain_names()){ //get the min, max, step for this gain name - gain_t gain_min, gain_max, gain_step; - boost::tie(gain_min, gain_max, gain_step) = \ - get_named_prop<gain_range_t>(_props.range, name); + gain_range_t gain = get_named_prop<gain_range_t>(_props.range, name); //clip g to be within the allowed range - gain_t g = std::min(std::max(gain_val, gain_min), gain_max); + gain_t g = std::min(std::max(gain_val, gain.min), gain.max); //set g to be a multiple of the step size - g -= fmod(g, gain_step); + g -= std::fmod(g, gain.step); //set g to be the new gain _link[named_prop_t(_props.value, name)] = g; //subtract g out of the total gain left to apply |