diff options
author | Lane Kolbly <lane.kolbly@ni.com> | 2020-06-22 18:06:38 -0500 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-06-25 13:36:08 -0500 |
commit | d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9 (patch) | |
tree | 8b8f1350d9d45d513f00e2b8e836a52600d27e66 /host/lib/features | |
parent | e9ae5fb949903cce1720b75b894401930cce1ebe (diff) | |
download | uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.tar.gz uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.tar.bz2 uhd-d6cb55ef08f51c9ebef57e5bbcb95b03a65972a9.zip |
uhd: Create discoverable feature registry implementation
Classes which want to implement discoverable_feature can simply inherit
from this registry and get access to an ergonomic map-backed registry of
features.
Diffstat (limited to 'host/lib/features')
-rw-r--r-- | host/lib/features/CMakeLists.txt | 12 | ||||
-rw-r--r-- | host/lib/features/discoverable_feature_registry.cpp | 34 |
2 files changed, 46 insertions, 0 deletions
diff --git a/host/lib/features/CMakeLists.txt b/host/lib/features/CMakeLists.txt new file mode 100644 index 000000000..2cdd1dd56 --- /dev/null +++ b/host/lib/features/CMakeLists.txt @@ -0,0 +1,12 @@ +# +# Copyright 2020 Ettus Research, a National Instruments Brand +# +# SPDX-License-Identifier: GPL-3.0-or-later +# + +######################################################################## +# This file included, use CMake directory variables +######################################################################## +LIBUHD_APPEND_SOURCES( + ${CMAKE_CURRENT_SOURCE_DIR}/discoverable_feature_registry.cpp +) diff --git a/host/lib/features/discoverable_feature_registry.cpp b/host/lib/features/discoverable_feature_registry.cpp new file mode 100644 index 000000000..5bed6a06e --- /dev/null +++ b/host/lib/features/discoverable_feature_registry.cpp @@ -0,0 +1,34 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#include <uhd/exception.hpp> +#include <uhd/features/discoverable_feature.hpp> +#include <uhdlib/features/discoverable_feature_registry.hpp> +#include <vector> + +namespace uhd { namespace features { + +std::vector<std::string> +discoverable_feature_registry::enumerate_features() +{ + std::vector<std::string> features; + for (auto& entry : _features) { + features.push_back(entry.second->get_feature_name()); + } + return features; +} + +discoverable_feature::sptr discoverable_feature_registry::get_feature_ptr( + discoverable_feature::feature_id_t feature_id) +{ + auto it = _features.find(feature_id); + if (it == _features.end()) { + return discoverable_feature::sptr(); + } + return it->second; +} + +}} // namespace uhd::features |