rtl: return an appropriate tuning range when in direct sampling mode

This commit is contained in:
Dimitri Stolnikov 2013-01-02 23:13:10 +01:00
parent 6ad2043130
commit 9bfce2694f
2 changed files with 10 additions and 0 deletions

View File

@ -84,6 +84,7 @@ rtl_source_c::rtl_source_c (const std::string &args)
_dev(NULL),
_buf(NULL),
_running(true),
_no_tuner(false),
_auto_gain(false),
_skipped(0)
{
@ -208,6 +209,7 @@ rtl_source_c::rtl_source_c (const std::string &args)
ret = rtlsdr_set_direct_sampling(_dev, direct_samp);
if (ret < 0)
throw std::runtime_error("Failed to enable direct sampling.");
_no_tuner = true;
}
if (offset_tune) {
@ -410,6 +412,13 @@ osmosdr::freq_range_t rtl_source_c::get_freq_range( size_t chan )
osmosdr::freq_range_t range;
if (_dev) {
if (_no_tuner) {
uint32_t rtl_freq;
if ( !rtlsdr_get_xtal_freq( _dev, &rtl_freq, NULL ) )
range += osmosdr::range_t( 0, double(rtl_freq) );
return range;
}
enum rtlsdr_tuner tuner = rtlsdr_get_tuner_type(_dev);
if ( tuner == RTLSDR_TUNER_E4000 ) {

View File

@ -134,6 +134,7 @@ private:
unsigned int _buf_offset;
int _samp_avail;
bool _no_tuner;
bool _auto_gain;
unsigned int _skipped;
};