1
0
Fork 0

Print device name on stderr.

When invalid device index specified, print list of detected devices.
This commit is contained in:
Joris van Rantwijk 2014-01-04 23:54:39 +01:00
parent 357451f639
commit 6fd7c91e52
3 changed files with 24 additions and 3 deletions

View File

@ -14,6 +14,10 @@ RtlSdrSource::RtlSdrSource(int dev_index)
{ {
int r; int r;
const char *devname = rtlsdr_get_device_name(dev_index);
if (devname != NULL)
m_devname = devname;
r = rtlsdr_open(&m_dev, dev_index); r = rtlsdr_open(&m_dev, dev_index);
if (r < 0) { if (r < 0) {
m_error = "Failed to open RTL-SDR device ("; m_error = "Failed to open RTL-SDR device (";

View File

@ -45,6 +45,12 @@ public:
/** Return a list of supported tuner gain settings in dB. */ /** Return a list of supported tuner gain settings in dB. */
std::vector<double> get_tuner_gains(); std::vector<double> get_tuner_gains();
/** Return name of opened RTL-SDR device. */
std::string get_device_name() const
{
return m_devname;
}
/** /**
* Fetch a bunch of samples from the device. * Fetch a bunch of samples from the device.
* *
@ -73,6 +79,7 @@ public:
private: private:
struct rtlsdr_dev * m_dev; struct rtlsdr_dev * m_dev;
int m_block_length; int m_block_length;
std::string m_devname;
std::string m_error; std::string m_error;
}; };

16
main.cc
View File

@ -293,9 +293,8 @@ int main(int argc, char **argv)
} }
break; break;
case 'd': case 'd':
if (!parse_opt(optarg, devidx) || devidx < 0) { if (!parse_opt(optarg, devidx))
badarg("-d"); devidx = -1;
}
break; break;
case 's': case 's':
if (!parse_opt(optarg, ifrate) || ifrate <= 0) { if (!parse_opt(optarg, ifrate) || ifrate <= 0) {
@ -367,6 +366,17 @@ int main(int argc, char **argv)
tuner_freq += 0.25 * ifrate; tuner_freq += 0.25 * ifrate;
} }
vector<string> devnames = RtlSdrSource::get_device_names();
if (devidx < 0 || (unsigned int)devidx >= devnames.size()) {
fprintf(stderr, "ERROR: invalid device index %d\n", devidx);
fprintf(stderr, "Found %u devices:\n", (unsigned int)devnames.size());
for (unsigned int i = 0; i < devnames.size(); i++) {
fprintf(stderr, "%2u: %s\n", i, devnames[i].c_str());
}
exit(1);
}
fprintf(stderr, "using device %d: %s\n", devidx, devnames[devidx].c_str());
// Open RTL-SDR device. // Open RTL-SDR device.
RtlSdrSource rtlsdr(devidx); RtlSdrSource rtlsdr(devidx);
if (!rtlsdr) { if (!rtlsdr) {