diff options
| author | Dimitri Stolnikov <horiz0n@gmx.net> | 2012-03-31 16:20:38 +0200 |
|---|---|---|
| committer | Dimitri Stolnikov <horiz0n@gmx.net> | 2012-03-31 16:20:38 +0200 |
| commit | c09fbb7c579d95a6b8d1ae319489cb5bc77a2a23 (patch) | |
| tree | b310fa79cea7fffa55d6964930bbef3a2e450b79 /src/main.c | |
| parent | 25cad444b266f75d66ca71fefafd0af1e9d85531 (diff) | |
fix reading from usb by resetting the
buffers as required
Diffstat (limited to 'src/main.c')
| -rw-r--r-- | src/main.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -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; |
