aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-04-25 22:32:51 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-04-25 22:32:51 +0200
commitbad6fb080b774c680f6d1eda4e1a00dad5a8cd20 (patch)
tree66e4b25f5b3a2f374fbf81a51e4043dcb1d87926 /include
parent8a1d6d69bdba90195468eb9c666e72e3eed3fe27 (diff)
introduce api to configure crystal oscillator frequency
Usually both, the RTL and the tuner ICs use the same clock. Changing the clock may make sense if you are applying an external clock to the tuner or to compensate the frequency (and samplerate) error caused by the original cheap crystal. This commit covers all tuner drivers except of the Fitipower FC2580
Diffstat (limited to 'include')
-rw-r--r--include/rtl-sdr.h30
-rw-r--r--include/rtlsdr_i2c.h7
2 files changed, 33 insertions, 4 deletions
diff --git a/include/rtl-sdr.h b/include/rtl-sdr.h
index 8a6dd38..e5b3f75 100644
--- a/include/rtl-sdr.h
+++ b/include/rtl-sdr.h
@@ -39,6 +39,36 @@ RTLSDR_API int rtlsdr_close(rtlsdr_dev_t *dev);
/* configuration functions */
+/*!
+ * Set crystal oscillator frequencies used for the RTL2832 and the tuner IC.
+ *
+ * Usually both ICs use the same clock. Changing the clock may make sense if
+ * you are applying an external clock to the tuner or to compensate the
+ * frequency (and samplerate) error caused by the original cheap crystal.
+ *
+ * NOTE: Call this function only if you know what you are doing.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param rtl_freq frequency value used to clock the RTL2832 in Hz
+ * \param tuner_freq frequency value used to clock the tuner IC in Hz
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_set_xtal_freq(rtlsdr_dev_t *dev, uint32_t rtl_freq,
+ uint32_t tuner_freq);
+
+/*!
+ * Get crystal oscillator frequencies used for the RTL2832 and the tuner IC.
+ *
+ * Usually both ICs use the same clock.
+ *
+ * \param dev the device handle given by rtlsdr_open()
+ * \param rtl_freq frequency value used to clock the RTL2832 in Hz
+ * \param tuner_freq frequency value used to clock the tuner IC in Hz
+ * \return 0 on success
+ */
+RTLSDR_API int rtlsdr_get_xtal_freq(rtlsdr_dev_t *dev, uint32_t *rtl_freq,
+ uint32_t *tuner_freq);
+
RTLSDR_API int rtlsdr_set_center_freq(rtlsdr_dev_t *dev, uint32_t freq);
/*!
diff --git a/include/rtlsdr_i2c.h b/include/rtlsdr_i2c.h
index 56ac9b6..7676689 100644
--- a/include/rtlsdr_i2c.h
+++ b/include/rtlsdr_i2c.h
@@ -1,9 +1,8 @@
#ifndef __I2C_H
#define __I2C_H
-typedef struct rtlsdr_dev rtlsdr_dev_t;
-
-int rtlsdr_i2c_write(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t *buffer, int len);
-int rtlsdr_i2c_read(rtlsdr_dev_t *dev, uint8_t i2c_addr, uint8_t *buffer, int len);
+uint32_t rtlsdr_get_tuner_clock(void *dev);
+int rtlsdr_i2c_write_fn(void *dev, uint8_t addr, uint8_t *buf, int len);
+int rtlsdr_i2c_read_fn(void *dev, uint8_t addr, uint8_t *buf, int len);
#endif