aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/lib/mykonos/ad937x_ctrl.hpp
diff options
context:
space:
mode:
authorMark Meserve <mark.meserve@ni.com>2017-03-23 14:49:42 -0700
committerMartin Braun <martin.braun@ettus.com>2017-12-22 15:03:44 -0800
commitbc4d1bf0ca341a72a7d7f6b2168aa3d2e936aabf (patch)
tree5af9a631efc95c2a1e94e58aa1a86b84e2c91712 /mpm/lib/mykonos/ad937x_ctrl.hpp
parent1a4348038d0eb57d53475074dca49e8192aeb2d7 (diff)
downloaduhd-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.hpp62
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