From 23d8d0cc77099b3b04dc0b796a02f8795aeb3c47 Mon Sep 17 00:00:00 2001 From: lwvmobile Date: Wed, 13 Sep 2023 11:05:28 -0400 Subject: [PATCH] Add RTL Device Enum and SN support to CLI; --- src/dsd_main.c | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/src/dsd_main.c b/src/dsd_main.c index c952dc3..f52da52 100644 --- a/src/dsd_main.c +++ b/src/dsd_main.c @@ -26,6 +26,10 @@ #include "provoice_const.h" #include "git_ver.h" +#ifdef USE_RTLSDR +#include +#endif + volatile uint8_t exitflag; //fix for issue #136 int pretty_colors() @@ -1156,7 +1160,7 @@ usage () printf ("RTL-SDR options:\n"); printf (" Usage: rtl:dev:freq:gain:ppm:bw:sq:udp\n"); printf (" NOTE: all arguments after rtl are optional now for trunking, but user configuration is recommended\n"); - printf (" dev RTL-SDR Device Index Number\n"); + printf (" dev RTL-SDR Device Index Number or 8 Digit Serial Number, no strings! (default 0)\n"); printf (" freq RTL-SDR Frequency (851800000 or 851.8M) \n"); printf (" gain RTL-SDR Device Gain (0-49)(default = 0; Hardware AGC recommended)\n"); printf (" ppm RTL-SDR PPM Error (default = 0)\n"); @@ -2485,6 +2489,37 @@ main (int argc, char **argv) else goto RTLEND; RTLEND: + + //use to list out all detected RTL dongles + char vendor[256], product[256], serial[256], userdev[256]; + int i, device_count = 0; + device_count = rtlsdr_get_device_count(); + if (!device_count) + { + fprintf(stderr, "No supported devices found.\n"); + exitflag = 1; + } + else fprintf(stderr, "Found %d device(s):\n", device_count); + for (i = 0; i < device_count; i++) + { + rtlsdr_get_device_usb_strings(i, vendor, product, serial); + fprintf(stderr, " %d: %s, %s, SN: %s\n", i, vendor, product, serial); + + sprintf (userdev, "%08d", opts.rtl_dev_index); + + //check by index first, then by serial + if (opts.rtl_dev_index == i) + { + fprintf (stderr, "Selected Device #%d with Serial Number: %s \n", i, serial); + } + else if (strcmp (userdev, serial) == 0) + { + fprintf (stderr, "Selected Device #%d with Serial Number: %s \n", i, serial); + opts.rtl_dev_index = i; + } + + } + fprintf (stderr, "Dev %d ", opts.rtl_dev_index); fprintf (stderr, "Freq %d ", opts.rtlsdr_center_freq); fprintf (stderr, "Gain %d ", opts.rtl_gain_value);