From e9251da6e238a64018d3a4b64d4d4593aa7acbfb Mon Sep 17 00:00:00 2001 From: Dimitri Stolnikov Date: Sat, 5 May 2012 18:30:13 +0200 Subject: [PATCH] reset internally cached gain/freq values on setter failure --- include/rtl-sdr.h | 2 +- src/rtl-sdr.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h index 305283a..6c342d1 100644 --- a/include/rtl-sdr.h +++ b/include/rtl-sdr.h @@ -101,7 +101,7 @@ RTLSDR_API int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain); * Get actual gain the device is configured to. * * \param dev the device handle given by rtlsdr_open() - * \return < 0 on error, gain in tenths of a dB, 115 means 11.5 dB. + * \return 0 on error, gain in tenths of a dB, 115 means 11.5 dB. */ RTLSDR_API int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev); diff --git a/src/rtl-sdr.c b/src/rtl-sdr.c index 6910694..1e7a41c 100644 --- a/src/rtl-sdr.c +++ b/src/rtl-sdr.c @@ -593,6 +593,8 @@ int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq) if (!r) dev->freq = freq; + else + dev->freq = 0; rtlsdr_set_i2c_repeater(dev, 0); } @@ -629,7 +631,7 @@ int rtlsdr_set_freq_correction(rtlsdr_dev_t *dev, int ppm) int rtlsdr_get_freq_correction(rtlsdr_dev_t *dev) { if (!dev || !dev->tuner) - return -1; + return 0; return dev->corr; } @@ -649,6 +651,8 @@ int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain) if (!r) dev->gain = gain; + else + dev->gain = 0; return r; } @@ -656,7 +660,7 @@ int rtlsdr_set_tuner_gain(rtlsdr_dev_t *dev, int gain) int rtlsdr_get_tuner_gain(rtlsdr_dev_t *dev) { if (!dev || !dev->tuner) - return -1; + return 0; return dev->gain; } @@ -1129,7 +1133,8 @@ int rtlsdr_cancel_async(rtlsdr_dev_t *dev) return -2; } -uint32_t rtlsdr_get_tuner_clock(void *dev) { +uint32_t rtlsdr_get_tuner_clock(void *dev) +{ if (!dev) return 0;