aboutsummaryrefslogtreecommitdiffstats
path: root/lib/rtl_tcp
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-07-01 11:38:46 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-07-01 11:38:46 +0200
commit604a9d79b0e80a30edbfb2fbbd06a20d4ad166e8 (patch)
tree9a46a12576d16822dd0013b6b591471ce1596b69 /lib/rtl_tcp
parent1ea5a90b19af07438671f692a3d7e347fec1634e (diff)
use clip method provided by range class to pick gain values
Diffstat (limited to 'lib/rtl_tcp')
-rw-r--r--lib/rtl_tcp/rtl_tcp_source_c.cc21
1 files changed, 1 insertions, 20 deletions
diff --git a/lib/rtl_tcp/rtl_tcp_source_c.cc b/lib/rtl_tcp/rtl_tcp_source_c.cc
index b9e4a00..f5f3b20 100644
--- a/lib/rtl_tcp/rtl_tcp_source_c.cc
+++ b/lib/rtl_tcp/rtl_tcp_source_c.cc
@@ -239,30 +239,11 @@ bool rtl_tcp_source_c::get_gain_mode( size_t chan )
return _auto_gain;
}
-static double pick_closest_gain(osmosdr::gain_range_t &gains, double required)
-{
- double result = required;
- double distance = 100;
-
- BOOST_FOREACH(osmosdr::range_t gain, gains)
- {
- double diff = fabs(gain.start() - required);
-
- if (diff < distance) {
- distance = diff;
- result = gain.start();
- }
- }
-
- return result;
-}
-
double rtl_tcp_source_c::set_gain( double gain, size_t chan )
{
osmosdr::gain_range_t gains = rtl_tcp_source_c::get_gain_range( chan );
- double picked_gain = pick_closest_gain( gains, gain );
- _src->set_gain( int(picked_gain * 10.0) );
+ _src->set_gain( int(gains.clip(gain) * 10.0) );
_gain = gain;