From d1a5b70a8f9a54a2a39e30415fbc0a4c607222f7 Mon Sep 17 00:00:00 2001 From: Brent Stapleton Date: Thu, 1 Aug 2019 14:01:50 -0700 Subject: 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. --- host/lib/utils/gain_group.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'host/lib/utils') 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; +} -- cgit v1.2.3