diff options
Diffstat (limited to 'host/lib/include')
-rw-r--r-- | host/lib/include/uhdlib/usrp/common/lmx2592.hpp | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/host/lib/include/uhdlib/usrp/common/lmx2592.hpp b/host/lib/include/uhdlib/usrp/common/lmx2592.hpp new file mode 100644 index 000000000..0e86d82aa --- /dev/null +++ b/host/lib/include/uhdlib/usrp/common/lmx2592.hpp @@ -0,0 +1,55 @@ +// +// Copyright 2018 Ettus Research, A National Instruments Company +// +// SPDX-License-Identifier: GPL-3.0 +// + +#ifndef INCLUDED_LMX2592_HPP +#define INCLUDED_LMX2592_HPP + +#include "lmx2592_regs.hpp" +#include <uhd/utils/log.hpp> +#include <uhd/utils/math.hpp> +#include <uhd/utils/safe_call.hpp> +#include <boost/format.hpp> +#include <boost/function.hpp> +#include <boost/math/common_factor_rt.hpp> //gcd +#include <algorithm> +#include <cstdint> +#include <utility> +#include <vector> + +class lmx2592_iface { +public: + typedef std::shared_ptr<lmx2592_iface> sptr; + + //! SPI write functor: Can take a SPI transaction and clock it out + using write_spi_t = std::function<void(uint32_t)>; + + //! SPI read functor: Return SPI + using read_spi_t = std::function<uint32_t(uint32_t)>; + + static sptr make(write_spi_t write, read_spi_t read); + + virtual ~lmx2592_iface() = default; + + enum output_t { RF_OUTPUT_A, RF_OUTPUT_B }; + + enum mash_order_t { INT_N, FIRST, SECOND, THIRD, FOURTH }; + + virtual double set_frequency(double target_freq) = 0; + + virtual void set_mash_order(mash_order_t mash_order) = 0; + + virtual void set_reference_frequency(double ref_freq) = 0; + + virtual void set_output_power(output_t output, unsigned int power) = 0; + + virtual void set_output_enable(output_t output, bool enable) = 0; + + virtual bool get_lock_status() = 0; + + virtual void commit() = 0; +}; + +#endif // INCLUDED_LMX2592_HPP |