Quellcode durchsuchen

reset internally cached gain/freq values on setter failure

Dimitri Stolnikov vor 13 Jahren
Ursprung
Commit
e9251da6e2
2 geänderte Dateien mit 9 neuen und 4 gelöschten Zeilen
  1. 1 1
      include/rtl-sdr.h
  2. 8 3
      src/rtl-sdr.c

+ 1 - 1
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);
 

+ 8 - 3
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;