diff options
author | Martin Braun <martin.braun@ettus.com> | 2017-03-08 09:28:55 -0800 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:44 -0800 |
commit | 1a4348038d0eb57d53475074dca49e8192aeb2d7 (patch) | |
tree | 04c8e87fa9c95d2702aac410f6fb271461acb9bb /mpm/lib/mykonos/ad937x_ctrl.hpp | |
parent | fc8cd827f6b16b9c8c354a216889e6a9d7f37456 (diff) | |
download | uhd-1a4348038d0eb57d53475074dca49e8192aeb2d7.tar.gz uhd-1a4348038d0eb57d53475074dca49e8192aeb2d7.tar.bz2 uhd-1a4348038d0eb57d53475074dca49e8192aeb2d7.zip |
Initial commit for N3xx development.
- Creates mpm/ subdirectory
- First pass at hardware daemon/MPM
- New code for LMK04828, AD9371
- spidev integration
Contributions by:
Martin Braun <martin.braun@ettus.com>
Derek Kozel <derek.kozel@ettus.com>
Mark Meserve <mark.meserve@ni.com>
Andrej Rode <andrej.rode@ettus.com>
Diffstat (limited to 'mpm/lib/mykonos/ad937x_ctrl.hpp')
-rw-r--r-- | mpm/lib/mykonos/ad937x_ctrl.hpp | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/mpm/lib/mykonos/ad937x_ctrl.hpp b/mpm/lib/mykonos/ad937x_ctrl.hpp new file mode 100644 index 000000000..6d36bdf05 --- /dev/null +++ b/mpm/lib/mykonos/ad937x_ctrl.hpp @@ -0,0 +1,68 @@ +#pragma once + +// TODO: fix path of UHD includes +#include <../../host/include/uhd/types/direction.hpp> +#include <../../host/include/uhd/types/ranges.hpp> +#include <../../host/include/uhd/exception.hpp> + +#include "config/ad937x_fir.h" +#include "adi/t_mykonos.h" +#include "../spi/spi_lock.h" +#include "../spi/spi_config.h" +#include <mpm/spi_iface.hpp> +#include <mpm/spi/adi_ctrl.hpp> +#include <boost/noncopyable.hpp> +#include <functional> + +struct ad937x_api_version_t { + uint32_t silicon_ver; + uint32_t major_ver; + uint32_t minor_ver; + uint32_t build_ver; +}; + +struct ad937x_arm_version_t { + uint32_t major_ver; + uint32_t minor_ver; + uint32_t rc_ver; +}; + +class ad937x_ctrl : public boost::noncopyable +{ +public: + typedef std::shared_ptr<ad937x_ctrl> sptr; + virtual ~ad937x_ctrl(void) {}; + + static uhd::meta_range_t get_rf_freq_range(void); + static uhd::meta_range_t get_bw_filter_range(void); + static std::vector<double> get_clock_rates(void); + static uhd::meta_range_t get_gain_range(const std::string &which); + + virtual uint8_t get_product_id() = 0; + virtual uint8_t get_device_rev() = 0; + virtual std::string get_api_version() = 0; + virtual std::string get_arm_version() = 0; + + virtual double set_bw_filter(const std::string &which, const double value) = 0; + virtual double set_gain(const std::string &which, const double value) = 0; + + virtual void set_agc(const std::string &which, const bool enable) = 0; + virtual void set_agc_mode(const std::string &which, const std::string &mode) = 0; + + virtual double set_clock_rate(const double value) = 0; + virtual void enable_channel(const std::string &which, const bool enable) = 0; + + virtual double set_freq(const std::string &which, const double value) = 0; + virtual double get_freq(const std::string &which) = 0; + + virtual void set_fir(const std::string &which, const std::vector<int16_t> & fir) = 0; + virtual std::vector<int16_t> get_fir(const std::string &which) = 0; + + virtual int16_t get_temperature() = 0; + +protected: + static uhd::direction_t _get_direction_from_antenna(const std::string& antenna); + static ad937x_device::chain_t _get_chain_from_antenna(const std::string& antenna); + + static std::vector<size_t> _get_valid_fir_lengths(const std::string& which); +};
\ No newline at end of file |