diff options
author | Mark Meserve <mark.meserve@ni.com> | 2017-03-23 14:49:42 -0700 |
---|---|---|
committer | Martin Braun <martin.braun@ettus.com> | 2017-12-22 15:03:44 -0800 |
commit | bc4d1bf0ca341a72a7d7f6b2168aa3d2e936aabf (patch) | |
tree | 5af9a631efc95c2a1e94e58aa1a86b84e2c91712 /mpm/lib/mykonos/ad937x_ctrl.hpp | |
parent | 1a4348038d0eb57d53475074dca49e8192aeb2d7 (diff) | |
download | uhd-bc4d1bf0ca341a72a7d7f6b2168aa3d2e936aabf.tar.gz uhd-bc4d1bf0ca341a72a7d7f6b2168aa3d2e936aabf.tar.bz2 uhd-bc4d1bf0ca341a72a7d7f6b2168aa3d2e936aabf.zip |
mpm: Rearchitecture of AD9371 code to use ctrl/device paradigm
Diffstat (limited to 'mpm/lib/mykonos/ad937x_ctrl.hpp')
-rw-r--r-- | mpm/lib/mykonos/ad937x_ctrl.hpp | 62 |
1 files changed, 33 insertions, 29 deletions
diff --git a/mpm/lib/mykonos/ad937x_ctrl.hpp b/mpm/lib/mykonos/ad937x_ctrl.hpp index 6d36bdf05..213a146b4 100644 --- a/mpm/lib/mykonos/ad937x_ctrl.hpp +++ b/mpm/lib/mykonos/ad937x_ctrl.hpp @@ -1,41 +1,46 @@ +// +// Copyright 2017 Ettus Research (National Instruments) +// +// 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/>. +// + #pragma once +#include "ad937x_device.hpp" +#include "../spi/spi_lock.h" + // 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 <../../host/include/uhd/types/serial.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 <memory> #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; -}; +#include <set> class ad937x_ctrl : public boost::noncopyable { public: typedef std::shared_ptr<ad937x_ctrl> sptr; + static sptr make(spi_lock::sptr spi_l, uhd::spi_iface::sptr iface); 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 std::set<double> get_clock_rates(void); static uhd::meta_range_t get_gain_range(const std::string &which); virtual uint8_t get_product_id() = 0; @@ -43,20 +48,19 @@ public: 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 double set_bw_filter(const std::string &which, double value) = 0; + virtual double set_gain(const std::string &which, 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_clock_rate(double value) = 0; + virtual void enable_channel(const std::string &which, bool enable) = 0; - virtual double set_freq(const std::string &which, const double value) = 0; + virtual double set_freq(const std::string &which, 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 void set_fir(const std::string &which, int8_t gain, const std::vector<int16_t> & fir) = 0; + virtual std::vector<int16_t> get_fir(const std::string &which, int8_t &gain) = 0; virtual int16_t get_temperature() = 0; @@ -64,5 +68,5 @@ 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); + static std::set<size_t> _get_valid_fir_lengths(const std::string& which); };
\ No newline at end of file |