summaryrefslogtreecommitdiff
path: root/src/rtl-sdr.c
diff options
context:
space:
mode:
authorSteve Markgraf <steve@steve-m.de>2012-04-02 18:17:28 +0200
committerSteve Markgraf <steve@steve-m.de>2012-04-02 18:17:28 +0200
commit09c00e439f2db54159b301f3e6b635d5f0a5841f (patch)
treea20a7fe5d97808ed74c39b794162c9de0581673c /src/rtl-sdr.c
parent3621cdfc603ca018e765fa2e01287af544028aa5 (diff)
select fc0012 UHF/VHF-filter according to frequency
Signed-off-by: Steve Markgraf <steve@steve-m.de>
Diffstat (limited to 'src/rtl-sdr.c')
-rw-r--r--src/rtl-sdr.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/rtl-sdr.c b/src/rtl-sdr.c
index 52adec1..d1c76d5 100644
--- a/src/rtl-sdr.c
+++ b/src/rtl-sdr.c
@@ -43,6 +43,8 @@ typedef struct rtlsdr_tuner {
int gain; /* dB */
} rtlsdr_tuner_t;
+void rtlsdr_set_gpio_bit(rtlsdr_dev_t *dev, uint8_t gpio, int val);
+
/* generic tuner interface functions, shall be moved to the tuner implementations */
int e4k_init(void *dev) { return e4000_Initialize(dev); }
int e4k_exit(void *dev) { return 0; }
@@ -53,8 +55,9 @@ int e4k_set_gain(void *dev, int gain) { return 0; }
int fc0012_init(void *dev) { return FC0012_Open(dev); }
int fc0012_exit(void *dev) { return 0; }
int fc0012_tune(void *dev, int freq) {
- /* TODO set GPIO6 accordingly */
unsigned int bw = 6;
+ /* select V-band/U-band filter */
+ rtlsdr_set_gpio_bit(dev, 6, (freq > 300000000) ? 1 : 0);
return FC0012_SetFrequency(dev, freq/1000, bw & 0xff);
}
int fc0012_set_bw(void *dev, int bw) {
@@ -675,6 +678,7 @@ rtlsdr_dev_t *rtlsdr_open(uint32_t index)
reg = rtlsdr_i2c_read_reg(dev, FC0012_I2C_ADDR, FC0012_CHECK_ADDR);
if (reg == FC0012_CHECK_VAL) {
fprintf(stderr, "Found Fitipower FC0012 tuner\n");
+ rtlsdr_set_gpio_output(dev, 6);
dev->tuner = &tuners[RTLSDR_TUNER_FC0012];
goto found;
}