summaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
authorDimitri Stolnikov <horiz0n@gmx.net>2012-03-31 16:20:38 +0200
committerDimitri Stolnikov <horiz0n@gmx.net>2012-03-31 16:20:38 +0200
commitc09fbb7c579d95a6b8d1ae319489cb5bc77a2a23 (patch)
treeb310fa79cea7fffa55d6964930bbef3a2e450b79 /src/main.c
parent25cad444b266f75d66ca71fefafd0af1e9d85531 (diff)
fix reading from usb by resetting the
buffers as required
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c
index 740151f..8232428 100644
--- a/src/main.c
+++ b/src/main.c
@@ -54,9 +54,13 @@ int main(int argc, char **argv)
uint32_t n_read;
FILE *file;
rtlsdr_dev_t *dev = NULL;
+ uint32_t dev_index = 0;
- while ((opt = getopt(argc, argv, "f:s:")) != -1) {
+ while ((opt = getopt(argc, argv, "d:f:s:")) != -1) {
switch (opt) {
+ case 'd':
+ dev_index = atoi(optarg);
+ break;
case 'f':
frequency = atoi(optarg);
break;
@@ -85,12 +89,14 @@ int main(int argc, char **argv)
printf("Found %d device(s).\n", device_count);
- dev = rtlsdr_open(0); /* open the first device */
+ dev = rtlsdr_open(dev_index);
if (NULL == dev) {
- fprintf(stderr, "Failed to open rtlsdr device.\n");
+ fprintf(stderr, "Failed to open rtlsdr device #%d.\n", dev_index);
exit(1);
}
+ printf("Using %s\n", rtlsdr_get_device_name(dev_index));
+
sigact.sa_handler = sighandler;
sigemptyset(&sigact.sa_mask);
sigact.sa_flags = 0;
@@ -115,12 +121,11 @@ int main(int argc, char **argv)
goto out;
}
- /* Reset endpoint before we start reading from it */
+ /* Reset endpoint before we start reading from it (mandatory) */
r = rtlsdr_reset_buffer(dev);
if (r < 0)
fprintf(stderr, "WARNING: Failed to reset buffers.\n");
-
printf("Reading samples...\n");
while (!do_exit) {
r = rtlsdr_read_sync(dev, buffer, READLEN, &n_read);
@@ -137,6 +142,8 @@ int main(int argc, char **argv)
fclose(file);
+ rtlsdr_close(dev);
+
rtlsdr_exit();
out:
return r >= 0 ? r : -r;