diff options
| author | Martin Braun <martin.braun@ettus.com> | 2019-07-03 20:15:35 -0700 | 
|---|---|---|
| committer | Martin Braun <martin.braun@ettus.com> | 2019-11-26 12:16:25 -0800 | 
| commit | c256b9df6502536c2e451e690f1ad5962c664d1a (patch) | |
| tree | a83ad13e6f5978bbe14bb3ecf8294ba1e3d28db4 /host/lib/include/uhdlib/usrp/common | |
| parent | 9a8435ed998fc5c65257f4c55768750b227ab19e (diff) | |
| download | uhd-c256b9df6502536c2e451e690f1ad5962c664d1a.tar.gz uhd-c256b9df6502536c2e451e690f1ad5962c664d1a.tar.bz2 uhd-c256b9df6502536c2e451e690f1ad5962c664d1a.zip | |
x300/mpmd: Port all RFNoC devices to the new RFNoC framework
Co-Authored-By: Alex Williams <alex.williams@ni.com>
Co-Authored-By: Sugandha Gupta <sugandha.gupta@ettus.com>
Co-Authored-By: Brent Stapleton <brent.stapleton@ettus.com>
Co-Authored-By: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
Diffstat (limited to 'host/lib/include/uhdlib/usrp/common')
| -rw-r--r-- | host/lib/include/uhdlib/usrp/common/apply_corrections.hpp | 40 | ||||
| -rw-r--r-- | host/lib/include/uhdlib/usrp/common/mpmd_mb_controller.hpp | 101 | 
2 files changed, 119 insertions, 22 deletions
| diff --git a/host/lib/include/uhdlib/usrp/common/apply_corrections.hpp b/host/lib/include/uhdlib/usrp/common/apply_corrections.hpp index 3b4669f9a..fca566493 100644 --- a/host/lib/include/uhdlib/usrp/common/apply_corrections.hpp +++ b/host/lib/include/uhdlib/usrp/common/apply_corrections.hpp @@ -14,30 +14,26 @@  namespace uhd{ namespace usrp{ -    void apply_tx_fe_corrections( -        property_tree::sptr sub_tree, //starts at mboards/x -        const fs_path db_path, -        const fs_path tx_fe_corr_path, -        const double tx_lo_freq //actual lo freq -    ); +void apply_tx_fe_corrections(property_tree::sptr sub_tree, // starts at mboards/x +    const std::string& db_serial, +    const fs_path tx_fe_corr_path, +    const double tx_lo_freq // actual lo freq +); -    void apply_tx_fe_corrections( -        property_tree::sptr sub_tree, //starts at mboards/x -        const std::string &slot, //name of dboard slot -        const double tx_lo_freq //actual lo freq -    ); -    void apply_rx_fe_corrections( -        property_tree::sptr sub_tree, //starts at mboards/x -        const std::string &slot, //name of dboard slot -        const double rx_lo_freq //actual lo freq -    ); +void apply_tx_fe_corrections(property_tree::sptr sub_tree, // starts at mboards/x +    const std::string& slot, // name of dboard slot +    const double tx_lo_freq // actual lo freq +); +void apply_rx_fe_corrections(property_tree::sptr sub_tree, // starts at mboards/x +    const std::string& slot, // name of dboard slot +    const double rx_lo_freq // actual lo freq +); -    void apply_rx_fe_corrections( -        property_tree::sptr sub_tree, //starts at mboards/x -        const fs_path db_path, -        const fs_path rx_fe_corr_path, -        const double rx_lo_freq //actual lo freq -    ); +void apply_rx_fe_corrections(property_tree::sptr sub_tree, // starts at mboards/x +    const std::string& db_serial, +    const fs_path rx_fe_corr_path, +    const double rx_lo_freq // actual lo freq +);  }} //namespace uhd::usrp  #endif /* INCLUDED_LIBUHD_USRP_COMMON_APPLY_CORRECTIONS_HPP */ diff --git a/host/lib/include/uhdlib/usrp/common/mpmd_mb_controller.hpp b/host/lib/include/uhdlib/usrp/common/mpmd_mb_controller.hpp new file mode 100644 index 000000000..0c64ecbad --- /dev/null +++ b/host/lib/include/uhdlib/usrp/common/mpmd_mb_controller.hpp @@ -0,0 +1,101 @@ +// +// Copyright 2019 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#ifndef INCLUDED_LIBUHD_MPMD_MB_CONTROLLER_HPP +#define INCLUDED_LIBUHD_MPMD_MB_CONTROLLER_HPP + +#include <uhd/rfnoc/mb_controller.hpp> +#include <uhdlib/utils/rpc.hpp> +#include <memory> + +namespace uhd { namespace rfnoc { + +/*! MPM-Specific version of the mb_controller + * + * Reminder: There is one of these per motherboard. + * + * This motherboard controller abstracts out a bunch of RPC calls. + */ +class mpmd_mb_controller : public mb_controller +{ +public: +    using sptr = std::shared_ptr<mpmd_mb_controller>; + +    mpmd_mb_controller(uhd::rpc_client::sptr rpcc, uhd::device_addr_t device_info); + +    //! Return reference to the RPC client +    uhd::rpc_client::sptr get_rpc_client() { return _rpc; } + +    /************************************************************************** +     * Timekeeper API +     *************************************************************************/ +    //! MPM-specific version of the timekeeper controls +    // +    // MPM devices talk to MPM via RPC to control the timekeeper +    class mpmd_timekeeper : public mb_controller::timekeeper +    { +    public: +        using sptr = std::shared_ptr<mpmd_timekeeper>; + +        mpmd_timekeeper(const size_t tk_idx, uhd::rpc_client::sptr rpc_client) +            : _tk_idx(tk_idx), _rpc(rpc_client) +        { +            // nop +        } + +        uint64_t get_ticks_now(); +        uint64_t get_ticks_last_pps(); +        void set_ticks_now(const uint64_t ticks); +        void set_ticks_next_pps(const uint64_t ticks); +        void set_period(const uint64_t period_ns); + +        /*! Update the tick rate +         *  Note: This is separate from set_tick_rate because the latter is +         *  protected, and we need to implement mpmd-specific functionality here +         */ +        void update_tick_rate(const double tick_rate); + +    private: +        const size_t _tk_idx; +        uhd::rpc_client::sptr _rpc; +    }; + +    /************************************************************************** +     * Motherboard Control API (see mb_controller.hpp) +     *************************************************************************/ +    std::string get_mboard_name() const; +    void set_time_source(const std::string& source); +    std::string get_time_source() const; +    std::vector<std::string> get_time_sources() const; +    void set_clock_source(const std::string& source); +    std::string get_clock_source() const; +    std::vector<std::string> get_clock_sources() const; +    void set_sync_source(const std::string& clock_source, const std::string& time_source); +    void set_sync_source(const uhd::device_addr_t& sync_source); +    uhd::device_addr_t get_sync_source() const; +    std::vector<uhd::device_addr_t> get_sync_sources(); +    void set_clock_source_out(const bool enb); +    void set_time_source_out(const bool enb); +    uhd::sensor_value_t get_sensor(const std::string& name); +    std::vector<std::string> get_sensor_names(); +    uhd::usrp::mboard_eeprom_t get_eeprom(); + +private: +    /************************************************************************** +     * Attributes +     *************************************************************************/ +    //! Reference to RPC interface +    mutable uhd::rpc_client::sptr _rpc; + +    uhd::device_addr_t _device_info; + +    //! List of MB sensor names +    std::unordered_set<std::string> _sensor_names; +}; + +}} // namespace uhd::rfnoc + +#endif /* INCLUDED_LIBUHD_MPMD_MB_CONTROLLER_HPP */ | 
