aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/utils
diff options
context:
space:
mode:
authorBrent Stapleton <brent.stapleton@ettus.com>2019-08-01 14:01:50 -0700
committerMartin Braun <martin.braun@ettus.com>2019-11-26 11:49:11 -0800
commitd1a5b70a8f9a54a2a39e30415fbc0a4c607222f7 (patch)
tree46e36f89e15c1fc57246027d1f52895a81e8fe63 /host/lib/utils
parent75ad0c55164e8e2f08b4bfc9d5361f2445a80f52 (diff)
downloaduhd-d1a5b70a8f9a54a2a39e30415fbc0a4c607222f7.tar.gz
uhd-d1a5b70a8f9a54a2a39e30415fbc0a4c607222f7.tar.bz2
uhd-d1a5b70a8f9a54a2a39e30415fbc0a4c607222f7.zip
gain_groups: Add zero-value gain groups
Add convenience factory for making a gain group that has a single zero-valued element. This factory requires a name, which should probably be ALL_GAINS, or something similar (these constants are device-specific). Using this new make_zero factory in the X300 radio control when we don't find any gain elements so that our gain groups aren't empty. This simplifies our later setters/getters because we know that we'll always have _something_ cached. Note that we only register this zero value gain group for TX, as our ADC is registered as a gain element, so our RX gain groups are never empty.
Diffstat (limited to 'host/lib/utils')
-rw-r--r--host/lib/utils/gain_group.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/host/lib/utils/gain_group.cpp b/host/lib/utils/gain_group.cpp
index 50edf2515..0e4df6469 100644
--- a/host/lib/utils/gain_group.cpp
+++ b/host/lib/utils/gain_group.cpp
@@ -182,3 +182,14 @@ private:
gain_group::sptr gain_group::make(void){
return sptr(new gain_group_impl());
}
+
+gain_group::sptr gain_group::make_zero()
+{
+ gain_fcns_t gain_fcns;
+ gain_fcns.get_range = []() { return meta_range_t(0.0, 0.0); };
+ gain_fcns.get_value = []() { return 0.0; };
+ gain_fcns.set_value = [](const double) {};
+ auto gg = make();
+ gg->register_fcns("null", gain_fcns);
+ return gg;
+}