summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-05-05 18:30:13 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-05-05 18:30:13 +0200
commite9251da6e238a64018d3a4b64d4d4593aa7acbfb (patch)
tree54e109d0dc5185631593ed19a2fab07a6d26f49b
parenteded5bf5c304aea7d493bdcc3f7f955c9e20f21d (diff)
reset internally cached gain/freq values on setter failure
-rw-r--r--include/rtl-sdr.h2
-rw-r--r--src/rtl-sdr.c11
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;