summaryrefslogtreecommitdiff
path: root/src/rtl-sdr.c
diff options
context:
space:
mode:
authorSteve Markgraf <steve@steve-m.de>2012-04-04 21:47:20 +0200
committerSteve Markgraf <steve@steve-m.de>2012-04-04 21:47:20 +0200
commit003446e508aaa7eba80c95667a4dc45995aa43c7 (patch)
tree596e492ecd35b29c22c8c7ae5631f3fbc1645fa5 /src/rtl-sdr.c
parentcdd6c488a3cc719a1c08fb573c84fcbb1d63a2b0 (diff)
use timeouts for control transfers
Signed-off-by: Steve Markgraf <steve@steve-m.de>
Diffstat (limited to 'src/rtl-sdr.c')
-rw-r--r--src/rtl-sdr.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/rtl-sdr.c b/src/rtl-sdr.c
index dc71741..7317c00 100644
--- a/src/rtl-sdr.c
+++ b/src/rtl-sdr.c
@@ -154,6 +154,7 @@ typedef struct rtlsdr_dev {
#define CTRL_IN (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_IN)
#define CTRL_OUT (LIBUSB_REQUEST_TYPE_VENDOR | LIBUSB_ENDPOINT_OUT)
+#define CTRL_TIMEOUT 300
enum usb_reg {
USB_SYSCTL = 0x2000,
@@ -197,7 +198,7 @@ int rtlsdr_read_array(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t *
int r;
uint16_t index = (block << 8);
- r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, array, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, array, len, CTRL_TIMEOUT);
return r;
}
@@ -207,7 +208,7 @@ int rtlsdr_write_array(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_t
int r;
uint16_t index = (block << 8) | 0x10;
- r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, array, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, array, len, CTRL_TIMEOUT);
return r;
}
@@ -260,7 +261,7 @@ uint16_t rtlsdr_read_reg(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint8_
uint16_t index = (block << 8);
uint16_t reg;
- r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, CTRL_TIMEOUT);
if (r < 0)
fprintf(stderr, "%s failed\n", __FUNCTION__);
@@ -284,7 +285,7 @@ void rtlsdr_write_reg(rtlsdr_dev_t *dev, uint8_t block, uint16_t addr, uint16_t
data[1] = val & 0xff;
- r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, CTRL_TIMEOUT);
if (r < 0)
fprintf(stderr, "%s failed\n", __FUNCTION__);
@@ -299,7 +300,7 @@ uint16_t rtlsdr_demod_read_reg(rtlsdr_dev_t *dev, uint8_t page, uint8_t addr, ui
uint16_t reg;
addr = (addr << 8) | 0x20;
- r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_IN, 0, addr, index, data, len, CTRL_TIMEOUT);
if (r < 0)
fprintf(stderr, "%s failed\n", __FUNCTION__);
@@ -323,7 +324,7 @@ void rtlsdr_demod_write_reg(rtlsdr_dev_t *dev, uint8_t page, uint16_t addr, uint
data[1] = val & 0xff;
- r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, 0);
+ r = libusb_control_transfer(dev->devh, CTRL_OUT, 0, addr, index, data, len, CTRL_TIMEOUT);
if (r < 0)
fprintf(stderr, "%s failed\n", __FUNCTION__);