osmosdr: read out gain values via library api

This commit is contained in:
Dimitri Stolnikov 2012-06-02 01:16:26 +02:00
parent b2128bc864
commit cd1db62699
1 changed files with 11 additions and 22 deletions

View File

@ -286,6 +286,7 @@ osmosdr::meta_range_t osmosdr_src_c::get_sample_rates()
osmosdr::meta_range_t range; osmosdr::meta_range_t range;
range += osmosdr::range_t( 500000 ); // known to work range += osmosdr::range_t( 500000 ); // known to work
range += osmosdr::range_t( 1000000 ); // known to work
// TODO: read from the libosmosdr as soon as the api is available // TODO: read from the libosmosdr as soon as the api is available
@ -313,10 +314,9 @@ osmosdr::freq_range_t osmosdr_src_c::get_freq_range( size_t chan )
{ {
osmosdr::freq_range_t range; osmosdr::freq_range_t range;
/* there is a (temperature dependent) gap between 1100 to 1250 MHz */
range += osmosdr::range_t( 50e6, 2.2e9, 100 ); range += osmosdr::range_t( 50e6, 2.2e9, 100 );
// TODO: read from the libosmosdr as soon as the api is available
return range; return range;
} }
@ -359,26 +359,15 @@ osmosdr::gain_range_t osmosdr_src_c::get_gain_range( size_t chan )
{ {
osmosdr::gain_range_t range; osmosdr::gain_range_t range;
range += osmosdr::range_t( -1.0 ); if (_dev) {
range += osmosdr::range_t( 1.5 ); int count = osmosdr_get_tuner_gains(_dev, NULL);
range += osmosdr::range_t( 4.0 ); if (count > 0) {
range += osmosdr::range_t( 6.5 ); int gains[ count ];
range += osmosdr::range_t( 9.0 ); count = osmosdr_get_tuner_gains(_dev, gains);
range += osmosdr::range_t( 11.5 ); for (int i = 0; i < count; i++)
range += osmosdr::range_t( 14.0 ); range += osmosdr::range_t( gains[i] / 10.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 libosmosdr as soon as the api is available
return range; return range;
} }