aboutsummaryrefslogtreecommitdiffstats
path: root/lib/osmosdr_source_c_impl.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/osmosdr_source_c_impl.cc')
-rw-r--r--lib/osmosdr_source_c_impl.cc40
1 files changed, 38 insertions, 2 deletions
diff --git a/lib/osmosdr_source_c_impl.cc b/lib/osmosdr_source_c_impl.cc
index fcac3cb..568e7b4 100644
--- a/lib/osmosdr_source_c_impl.cc
+++ b/lib/osmosdr_source_c_impl.cc
@@ -561,8 +561,8 @@ double osmosdr_source_c_impl::set_bb_gain( double gain, size_t chan )
BOOST_FOREACH( osmosdr_src_iface *dev, _devs )
for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
if ( chan == channel++ )
- if ( _if_gain[ chan ] != gain ) {
- _if_gain[ chan ] = gain;
+ if ( _bb_gain[ chan ] != gain ) {
+ _bb_gain[ chan ] = gain;
return dev->set_bb_gain( gain, dev_chan );
}
@@ -662,3 +662,39 @@ void osmosdr_source_c_impl::set_iq_balance( const std::complex<double> &correcti
}
#endif
}
+
+double osmosdr_source_c_impl::set_bandwidth( double bandwidth, size_t chan )
+{
+ size_t channel = 0;
+ BOOST_FOREACH( osmosdr_src_iface *dev, _devs )
+ for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
+ if ( chan == channel++ )
+ if ( _bandwidth[ chan ] != bandwidth ) {
+ _bandwidth[ chan ] = bandwidth;
+ return dev->set_bandwidth( bandwidth, dev_chan );
+ }
+
+ return 0;
+}
+
+double osmosdr_source_c_impl::get_bandwidth( size_t chan )
+{
+ size_t channel = 0;
+ BOOST_FOREACH( osmosdr_src_iface *dev, _devs )
+ for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
+ if ( chan == channel++ )
+ return dev->get_bandwidth( dev_chan );
+
+ return 0;
+}
+
+osmosdr::meta_range_t osmosdr_source_c_impl::get_bandwidth_range( size_t chan )
+{
+ size_t channel = 0;
+ BOOST_FOREACH( osmosdr_src_iface *dev, _devs )
+ for (size_t dev_chan = 0; dev_chan < dev->get_num_channels(); dev_chan++)
+ if ( chan == channel++ )
+ return dev->get_bandwidth_range( dev_chan );
+
+ return osmosdr::meta_range_t();
+}