From 9fb055a78a1452547abd490cccce8b804cc3b153 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Fri, 10 Nov 2017 23:32:16 -0800 Subject: lib: Add 'prefs' API This defines and reads configuration files that can be used to customize UHD's behaviour. On Unix systems, they default to: /etc/uhd/uhd.conf $APPDATA/.uhd/uhd.conf On Windows systems, it will look in: %ProgramData%/uhd/uhd.conf %AppData%/.uhd/uhd.conf --- host/lib/include/uhdlib/utils/prefs.hpp | 54 +++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 host/lib/include/uhdlib/utils/prefs.hpp (limited to 'host/lib/include/uhdlib/utils') diff --git a/host/lib/include/uhdlib/utils/prefs.hpp b/host/lib/include/uhdlib/utils/prefs.hpp new file mode 100644 index 000000000..62831a875 --- /dev/null +++ b/host/lib/include/uhdlib/utils/prefs.hpp @@ -0,0 +1,54 @@ +// +// Copyright 2018 Ettus Research, a National Instruments Company +// +// SPDX-License-Identifier: GPL-3.0+ +// + +#ifndef INCLUDED_LIBUHD_UTILS_PREFS_HPP +#define INCLUDED_LIBUHD_UTILS_PREFS_HPP + +#include +#include +#include + +namespace uhd { namespace prefs { + + /*! Return a reference to an object representing the UHD config file + * state. + * + * Note: Don't call this in static initializers. + */ + config_parser& get_uhd_config(); + + /*! Convenience function to update device args with settings from + * config files. + * + * Assume the user has a configuration file as such: + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~{.ini} + * [type=b200] + * master_clock_rate=20e6 + * + * [serial=f42f9b] ; Let's assume this is another B200 + * master_clock_rate=10e6 + * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + * If get_usrp_args() gets called with "type" key equal to "b200", it will + * first apply the `master_clock_rate=20e6` settings, as if they had been + * passed in as device args into the initialization sequence. If the device + * happens to have the serial number listed above, i.e., "serial" equals + * "f42f9b", then the new value `master_clock_rate=10e6` will get applied. + * + * If the user actually specified their own value of `master_clock_rate`, + * that value would get applied. + * + * + * \param user_args After getting the device args from the config + * files, all of these key/value pairs will be applied + * and will overwrite the settings from config files + * if they exist. + */ + uhd::device_addr_t get_usrp_args(const uhd::device_addr_t &user_args); + +}} /* namespace uhd::prefs */ + +#endif /* INCLUDED_LIBUHD_UTILS_PREFS_HPP */ + -- cgit v1.2.3