forked from sdr/gr-osmosdr
rtl: read out gain values via library api
This commit is contained in:
parent
cd1db62699
commit
27dff71304
|
@ -312,16 +312,16 @@ osmosdr::meta_range_t rtl_source_c::get_sample_rates()
|
|||
{
|
||||
osmosdr::meta_range_t range;
|
||||
|
||||
range += osmosdr::range_t( 1000000 ); // known to work
|
||||
range += osmosdr::range_t( 1024000 ); // known to work
|
||||
range += osmosdr::range_t( 1800000 ); // known to work
|
||||
range += osmosdr::range_t( 1920000 ); // known to work
|
||||
range += osmosdr::range_t( 2048000 ); // known to work
|
||||
range += osmosdr::range_t( 2400000 ); // may work
|
||||
range += osmosdr::range_t( 2400000 ); // known to work
|
||||
range += osmosdr::range_t( 2600000 ); // may work
|
||||
range += osmosdr::range_t( 2800000 ); // may work
|
||||
range += osmosdr::range_t( 3000000 ); // may work
|
||||
range += osmosdr::range_t( 3200000 ); // max rate, may work
|
||||
|
||||
// TODO: read from the librtlsdr as soon as the api is available
|
||||
range += osmosdr::range_t( 3200000 ); // max rate
|
||||
|
||||
return range;
|
||||
}
|
||||
|
@ -347,9 +347,20 @@ osmosdr::freq_range_t rtl_source_c::get_freq_range( size_t chan )
|
|||
{
|
||||
osmosdr::freq_range_t range;
|
||||
|
||||
range += osmosdr::range_t( 50e6, 2.2e9, 100 );
|
||||
if (_dev) {
|
||||
enum rtlsdr_tuner tuner = rtlsdr_get_tuner_type(_dev);
|
||||
|
||||
// TODO: read from the librtlsdr as soon as the api is available
|
||||
if ( tuner == RTLSDR_TUNER_E4000 ) {
|
||||
/* there is a (temperature dependent) gap between 1100 to 1250 MHz */
|
||||
range += osmosdr::range_t( 50e6, 2.2e9, 100 );
|
||||
} else if ( tuner == RTLSDR_TUNER_FC0012 ) {
|
||||
/* range += osmosdr::range_t( 50e6, 2.2e9, 100 ); */
|
||||
} else if ( tuner == RTLSDR_TUNER_FC0013 ) {
|
||||
/* range += osmosdr::range_t( 50e6, 2.2e9, 100 ); */
|
||||
} else if ( tuner == RTLSDR_TUNER_FC2580 ) {
|
||||
/* range += osmosdr::range_t( 50e6, 2.2e9, 100 ); */
|
||||
}
|
||||
}
|
||||
|
||||
return range;
|
||||
}
|
||||
|
@ -399,26 +410,15 @@ osmosdr::gain_range_t rtl_source_c::get_gain_range( size_t chan )
|
|||
{
|
||||
osmosdr::gain_range_t range;
|
||||
|
||||
range += osmosdr::range_t( -1.0 );
|
||||
range += osmosdr::range_t( 1.5 );
|
||||
range += osmosdr::range_t( 4.0 );
|
||||
range += osmosdr::range_t( 6.5 );
|
||||
range += osmosdr::range_t( 9.0 );
|
||||
range += osmosdr::range_t( 11.5 );
|
||||
range += osmosdr::range_t( 14.0 );
|
||||
range += osmosdr::range_t( 16.5 );
|
||||
range += osmosdr::range_t( 19.0 );
|
||||
range += osmosdr::range_t( 21.5 );
|
||||
range += osmosdr::range_t( 24.0 );
|
||||
range += osmosdr::range_t( 29.0 );
|
||||
range += osmosdr::range_t( 34.0 );
|
||||
range += osmosdr::range_t( 42.0 );
|
||||
range += osmosdr::range_t( 43.0 );
|
||||
range += osmosdr::range_t( 45.0 );
|
||||
range += osmosdr::range_t( 47.0 );
|
||||
range += osmosdr::range_t( 49.0 );
|
||||
|
||||
// TODO: read from the librtlsdr as soon as the api is available
|
||||
if (_dev) {
|
||||
int count = rtlsdr_get_tuner_gains(_dev, NULL);
|
||||
if (count > 0) {
|
||||
int gains[ count ];
|
||||
count = rtlsdr_get_tuner_gains(_dev, gains);
|
||||
for (int i = 0; i < count; i++)
|
||||
range += osmosdr::range_t( gains[i] / 10.0 );
|
||||
}
|
||||
}
|
||||
|
||||
return range;
|
||||
}
|
||||
|
|
|
@ -120,14 +120,16 @@ osmosdr::meta_range_t rtl_tcp_source_c::get_sample_rates( void )
|
|||
{
|
||||
osmosdr::meta_range_t range;
|
||||
|
||||
range += osmosdr::range_t( 1000000 ); // known to work
|
||||
range += osmosdr::range_t( 1024000 ); // known to work
|
||||
range += osmosdr::range_t( 1800000 ); // known to work
|
||||
range += osmosdr::range_t( 1920000 ); // known to work
|
||||
range += osmosdr::range_t( 2048000 ); // known to work
|
||||
range += osmosdr::range_t( 2400000 ); // may work
|
||||
range += osmosdr::range_t( 2400000 ); // known to work
|
||||
range += osmosdr::range_t( 2600000 ); // may work
|
||||
range += osmosdr::range_t( 2800000 ); // may work
|
||||
range += osmosdr::range_t( 3000000 ); // may work
|
||||
range += osmosdr::range_t( 3200000 ); // max rate, may work
|
||||
range += osmosdr::range_t( 3200000 ); // max rate
|
||||
|
||||
return range;
|
||||
}
|
||||
|
@ -148,6 +150,8 @@ double rtl_tcp_source_c::get_sample_rate( void )
|
|||
|
||||
osmosdr::freq_range_t rtl_tcp_source_c::get_freq_range( size_t chan )
|
||||
{
|
||||
// FIXME: assumption on E4000 tuner
|
||||
|
||||
osmosdr::freq_range_t range(50e6, 2.2e6, 100);
|
||||
|
||||
return range;
|
||||
|
@ -190,6 +194,8 @@ osmosdr::gain_range_t rtl_tcp_source_c::get_gain_range( size_t chan )
|
|||
{
|
||||
osmosdr::gain_range_t range;
|
||||
|
||||
// FIXME: assumption on E4000 tuner
|
||||
|
||||
range += osmosdr::range_t( -1.0 );
|
||||
range += osmosdr::range_t( 1.5 );
|
||||
range += osmosdr::range_t( 4.0 );
|
||||
|
|
Loading…
Reference in New Issue