diff options
| author | Nick Foster <nick@nerdnetworks.org> | 2010-07-27 16:55:04 -0700 | 
|---|---|---|
| committer | Nick Foster <nick@nerdnetworks.org> | 2010-07-27 16:55:04 -0700 | 
| commit | c08674e26bfb456242efd90b5c7d32b8d6179c64 (patch) | |
| tree | d177d8c6222a254564fb4e3272beccf4096be0ed | |
| parent | 92e7a28de3f022f52da3fb9232a8287f6fa07d46 (diff) | |
| download | uhd-c08674e26bfb456242efd90b5c7d32b8d6179c64.tar.gz uhd-c08674e26bfb456242efd90b5c7d32b8d6179c64.tar.bz2 uhd-c08674e26bfb456242efd90b5c7d32b8d6179c64.zip | |
Added one more file from codec_gains2...
| -rw-r--r-- | host/include/uhd/utils/gain_group.hpp | 85 | 
1 files changed, 85 insertions, 0 deletions
| diff --git a/host/include/uhd/utils/gain_group.hpp b/host/include/uhd/utils/gain_group.hpp new file mode 100644 index 000000000..3955dfa9a --- /dev/null +++ b/host/include/uhd/utils/gain_group.hpp @@ -0,0 +1,85 @@ +// +// Copyright 2010 Ettus Research LLC +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program.  If not, see <http://www.gnu.org/licenses/>. +// + +#ifndef INCLUDED_UHD_UTILS_GAIN_GROUP_HPP +#define INCLUDED_UHD_UTILS_GAIN_GROUP_HPP + +#include <uhd/config.hpp> +#include <uhd/types/ranges.hpp> +#include <boost/shared_ptr.hpp> +#include <boost/function.hpp> +#include <boost/utility.hpp> + +namespace uhd{ + +/*! + * A set of function to control a gain element. + */ +struct UHD_API gain_fcns_t{ +    boost::function<gain_range_t(void)> get_range; +    boost::function<float(void)>        get_value; +    boost::function<void(float)>        set_value; +}; + +class UHD_API gain_group : boost::noncopyable{ +public: +    typedef boost::shared_ptr<gain_group> sptr; + +    /*! +     * Get the overall gain range for this group. +     * Overall step is defined as the minimum step size. +     * \return a gain range with overall min, max, step +     */ +    virtual gain_range_t get_range(void) = 0; + +    /*! +     * Get the overall gain value for this group. +     * \return a summation of all the gain values +     */ +    virtual float get_value(void) = 0; + +    /*! +     * Set the overall gain value for this group. +     * The power will be distributed across individual gain elements. +     * The semantics of how to do this are determined by the priority. +     * \param gain the gain to set across the group +     */ +    virtual void set_value(float gain) = 0; + +    /*! +     * Register a set of gain functions into this group. +     * Priority determines how power will be distributed +     * with higher priorities getting the power first, +     * and lower priorities getting the remainder power. +     * \param gain_fcns the set of gain functions +     * \param priority the priority of the gain element +     */ +    virtual void register_fcns( +        const gain_fcns_t &gain_fcns, size_t priority = 0 +    ) = 0; + +    /*! +     * Make a new empty gain group. +     * \return a gain group object. +     */ +    static sptr make(void); +}; + +} //namespace uhd + +#endif /* INCLUDED_UHD_UTILS_GAIN_GROUP_HPP */ + | 
