From 592a814bdb023cf471e4ff9ead13c8e11712360e Mon Sep 17 00:00:00 2001 From: Heikki Hannikainen Date: Tue, 24 Feb 2015 12:31:46 +0200 Subject: [PATCH] hackrf_source: Truncate serial numbers to 16 chars when enumerating, parse USB board IDs correctly Signed-off-by: Heikki Hannikainen --- lib/hackrf/hackrf_source_c.cc | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/hackrf/hackrf_source_c.cc b/lib/hackrf/hackrf_source_c.cc index 9a7aa72..f064c8b 100644 --- a/lib/hackrf/hackrf_source_c.cc +++ b/lib/hackrf/hackrf_source_c.cc @@ -383,13 +383,16 @@ std::vector hackrf_source_c::get_devices() for (unsigned int i = 0; i < list->devicecount; i++) { std::string args; - if (list->serial_numbers[i]) - args = "hackrf=" + boost::lexical_cast< std::string >( list->serial_numbers[i] ); - else - args = "hackrf=" + boost::lexical_cast< std::string >( i ); + if (list->serial_numbers[i]) { + std::string serial = boost::lexical_cast< std::string >( list->serial_numbers[i] ); + if (serial.length() > 16) + serial = serial.substr(serial.length() - 16, 16); + args = "hackrf=" + serial; + } else + args = "hackrf"; /* will pick the first one, serial number is required for choosing a specific one */ label = "HackRF "; - label += hackrf_board_id_name(hackrf_board_id( list->product_ids[i] )); + label += hackrf_usb_board_id_name( list->usb_board_ids[i] ); boost::algorithm::trim(label);