aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-05-07 23:39:30 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-05-07 23:39:30 +0200
commit8402124e6f66aa99415e495de67e8021151a25c8 (patch)
tree779f532fa020d465400780dfe8ab141f60bc879c /src
parente042c36cb5b0aed5a9e5e768eaa0233920131cb3 (diff)
enable i2c repeater mode before applying filter bandwidth
Diffstat (limited to 'src')
-rw-r--r--src/rtl-sdr.c27
1 files changed, 11 insertions, 16 deletions
diff --git a/src/rtl-sdr.c b/src/rtl-sdr.c
index 1e7a41c..2662a0d 100644
--- a/src/rtl-sdr.c
+++ b/src/rtl-sdr.c
@@ -509,13 +509,9 @@ int rtlsdr_deinit_baseband(rtlsdr_dev_t *dev)
if (!dev)
return -1;
- if (dev->tuner) {
- /* deinitialize tuner */
+ if (dev->tuner && dev->tuner->exit) {
rtlsdr_set_i2c_repeater(dev, 1);
-
- if (dev->tuner->exit)
- r = dev->tuner->exit(dev);
-
+ r = dev->tuner->exit(dev); /* deinitialize tuner */
rtlsdr_set_i2c_repeater(dev, 0);
}
@@ -533,7 +529,7 @@ int rtlsdr_set_xtal_freq(rtlsdr_dev_t *dev, uint32_t rtl_freq, uint32_t tuner_fr
return -1;
if (rtl_freq > 0 &&
- (rtl_freq < MIN_RTL_XTAL_FREQ || rtl_freq > MAX_RTL_XTAL_FREQ))
+ (rtl_freq < MIN_RTL_XTAL_FREQ || rtl_freq > MAX_RTL_XTAL_FREQ))
return -2;
if (dev->rtl_xtal != rtl_freq) {
@@ -585,18 +581,16 @@ int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq)
return -1;
if (dev->tuner->set_freq) {
- rtlsdr_set_i2c_repeater(dev, 1);
-
f *= 1.0 + dev->corr / 1e6;
+ rtlsdr_set_i2c_repeater(dev, 1);
r = dev->tuner->set_freq(dev, (uint32_t) f);
+ rtlsdr_set_i2c_repeater(dev, 0);
if (!r)
dev->freq = freq;
else
dev->freq = 0;
-
- rtlsdr_set_i2c_repeater(dev, 0);
}
return r;
@@ -681,8 +675,6 @@ int rtlsdr_set_tuner_gain_mode(rtlsdr_dev_t *dev, int mode)
return r;
}
-
-
int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
{
uint16_t tmp;
@@ -704,8 +696,11 @@ int rtlsdr_set_sample_rate(rtlsdr_dev_t *dev, uint32_t samp_rate)
if ( ((double)samp_rate) != real_rate )
fprintf(stderr, "Exact sample rate is: %f Hz\n", real_rate);
- if (dev->tuner && dev->tuner->set_bw)
+ if (dev->tuner && dev->tuner->set_bw) {
+ rtlsdr_set_i2c_repeater(dev, 1);
dev->tuner->set_bw(dev, real_rate);
+ rtlsdr_set_i2c_repeater(dev, 0);
+ }
dev->rate = samp_rate;
@@ -1005,7 +1000,7 @@ static int _rtlsdr_alloc_async_buffers(rtlsdr_dev_t *dev)
if (!dev->xfer_buf) {
dev->xfer_buf = malloc(dev->xfer_buf_num *
- sizeof(unsigned char *));
+ sizeof(unsigned char *));
for(i = 0; i < dev->xfer_buf_num; ++i)
dev->xfer_buf[i] = malloc(dev->xfer_buf_len);
@@ -1046,7 +1041,7 @@ static int _rtlsdr_free_async_buffers(rtlsdr_dev_t *dev)
}
int rtlsdr_read_async(rtlsdr_dev_t *dev, rtlsdr_read_async_cb_t cb, void *ctx,
- uint32_t buf_num, uint32_t buf_len)
+ uint32_t buf_num, uint32_t buf_len)
{
unsigned int i;
int r;