From abf025f0a5c537f0b2ab07da933ffb82f62418ef Mon Sep 17 00:00:00 2001 From: Lane Kolbly Date: Mon, 6 Apr 2020 11:17:29 -0500 Subject: uhd: Add fuzzy serial number checking We have integer 32-bit serial numbers for MPM devices, for example "1234abcd". For serial numbers which have less than eight digits, e.g. "123abcd", a user may feel inclined to prefix this number with a 0 when they are searching for devices, e.g. "0123abcd". This change makes it so that specifying "0123abcd" will match a device with serial number "123ABCD". --- host/lib/utils/CMakeLists.txt | 1 + host/lib/utils/serial_number.cpp | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 host/lib/utils/serial_number.cpp (limited to 'host/lib/utils') diff --git a/host/lib/utils/CMakeLists.txt b/host/lib/utils/CMakeLists.txt index 5d1d22e9b..aa06e2c45 100644 --- a/host/lib/utils/CMakeLists.txt +++ b/host/lib/utils/CMakeLists.txt @@ -214,6 +214,7 @@ LIBUHD_APPEND_SOURCES( ${CMAKE_CURRENT_SOURCE_DIR}/pathslib.cpp ${CMAKE_CURRENT_SOURCE_DIR}/platform.cpp ${CMAKE_CURRENT_SOURCE_DIR}/prefs.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/serial_number.cpp ${CMAKE_CURRENT_SOURCE_DIR}/static.cpp ${CMAKE_CURRENT_SOURCE_DIR}/system_time.cpp ${CMAKE_CURRENT_SOURCE_DIR}/tasks.cpp diff --git a/host/lib/utils/serial_number.cpp b/host/lib/utils/serial_number.cpp new file mode 100644 index 000000000..7fd0863d6 --- /dev/null +++ b/host/lib/utils/serial_number.cpp @@ -0,0 +1,23 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#include +#include +#include + +namespace uhd +{ + bool serial_numbers_match(const std::string& serial_a, const std::string& serial_b) + { + try { + const uint32_t a = std::stoi(serial_a, 0, 16); + const uint32_t b = std::stoi(serial_b, 0, 16); + return a == b; + } catch (std::out_of_range& e) { + return false; + } + } +} -- cgit v1.2.3