From 3615873feebe2d86f38e45acafb0265ea7246916 Mon Sep 17 00:00:00 2001 From: Derek Kozel Date: Mon, 30 Apr 2018 15:04:35 +0100 Subject: uhd: Added LMX2592 driver --- host/lib/include/uhdlib/usrp/common/lmx2592.hpp | 55 +++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 host/lib/include/uhdlib/usrp/common/lmx2592.hpp (limited to 'host/lib/include/uhdlib') 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 +#include +#include +#include +#include +#include //gcd +#include +#include +#include +#include + +class lmx2592_iface { +public: + typedef std::shared_ptr sptr; + + //! SPI write functor: Can take a SPI transaction and clock it out + using write_spi_t = std::function; + + //! SPI read functor: Return SPI + using read_spi_t = std::function; + + 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 -- cgit v1.2.3