diff options
| -rw-r--r-- | host/include/uhd/deprecated.hpp | 1 | ||||
| -rw-r--r-- | host/include/uhd/types/clock_config.hpp | 5 | ||||
| -rw-r--r-- | host/include/uhd/usrp/multi_usrp.hpp | 53 | ||||
| -rw-r--r-- | host/lib/deprecated.cpp | 28 | ||||
| -rw-r--r-- | host/lib/types/CMakeLists.txt | 1 | ||||
| -rw-r--r-- | host/lib/types/clock_config.cpp | 44 | ||||
| -rw-r--r-- | host/lib/usrp/multi_usrp.cpp | 72 | 
7 files changed, 136 insertions, 68 deletions
| diff --git a/host/include/uhd/deprecated.hpp b/host/include/uhd/deprecated.hpp index e4112fa66..d918836f1 100644 --- a/host/include/uhd/deprecated.hpp +++ b/host/include/uhd/deprecated.hpp @@ -243,3 +243,4 @@ namespace uhd{  #endif /* INCLUDED_UHD_TYPES_OTW_TYPE_HPP */  #include <uhd/types/io_type.hpp> //wish it was in here +#include <uhd/types/clock_config.hpp> //wish it was in here diff --git a/host/include/uhd/types/clock_config.hpp b/host/include/uhd/types/clock_config.hpp index 24bd96d14..27b312245 100644 --- a/host/include/uhd/types/clock_config.hpp +++ b/host/include/uhd/types/clock_config.hpp @@ -23,10 +23,13 @@  namespace uhd{      /*! -     * Clock configuration settings: +     * The DEPRECATED Clock configuration settings:       * The source for the 10MHz reference clock.       * The source and polarity for the PPS clock.       * +     * Deprecated in favor of set time/clock source calls. +     * Its still in this file for the sake of gr-uhd swig. +     *       * Use the convenience functions external() and internal(),       * unless you have a special purpose and cannot use them.       */ diff --git a/host/include/uhd/usrp/multi_usrp.hpp b/host/include/uhd/usrp/multi_usrp.hpp index 72386204f..ee7bf8424 100644 --- a/host/include/uhd/usrp/multi_usrp.hpp +++ b/host/include/uhd/usrp/multi_usrp.hpp @@ -18,11 +18,13 @@  #ifndef INCLUDED_UHD_USRP_MULTI_USRP_HPP  #define INCLUDED_UHD_USRP_MULTI_USRP_HPP +#define UHD_USRP_MULTI_USRP_REF_SOURCES_API +  #include <uhd/config.hpp>  #include <uhd/device.hpp> +#include <uhd/deprecated.hpp>  #include <uhd/types/ranges.hpp>  #include <uhd/types/stream_cmd.hpp> -#include <uhd/types/clock_config.hpp>  #include <uhd/types/tune_request.hpp>  #include <uhd/types/tune_result.hpp>  #include <uhd/types/sensors.hpp> @@ -31,6 +33,7 @@  #include <uhd/usrp/mboard_iface.hpp>  #include <boost/shared_ptr.hpp>  #include <boost/utility.hpp> +#include <string>  #include <vector>  namespace uhd{ namespace usrp{ @@ -235,6 +238,7 @@ public:      /*!       * Set the clock configuration for the usrp device. +     * DEPRECATED in favor of set time and clock source calls.       * This tells the usrp how to get a 10Mhz reference and PPS clock.       * See the documentation for clock_config_t for more info.       * \param clock_config the clock configuration to set @@ -243,6 +247,53 @@ public:      virtual void set_clock_config(const clock_config_t &clock_config, size_t mboard = ALL_MBOARDS) = 0;      /*! +     * Set the time source for the usrp device. +     * This sets the method of time synchronization, +     * typically a pulse per second or an encoded time. +     * Typical options for source: external, MIMO. +     * \param source a string representing the time source +     * \param mboard which motherboard to set the config +     */ +    virtual void set_time_source(const std::string &source, const size_t mboard = ALL_MBOARDS) = 0; + +    /*! +     * Get the currently set time source. +     * \param mboard which motherboard to get the config +     * \return the string representing the time source +     */ +    virtual std::string get_time_source(const size_t mboard) = 0; + +    /*! +     * Get a list of possible time sources. +     * \param mboard which motherboard to get the list +     * \return a vector of strings for possible settings +     */ +    virtual std::vector<std::string> get_time_sources(const size_t mboard) = 0; + +    /*! +     * Set the clock source for the usrp device. +     * This sets the source for a 10 Mhz reference clock. +     * Typical options for source: internal, external, MIMO. +     * \param source a string representing the clock source +     * \param mboard which motherboard to set the config +     */ +    virtual void set_clock_source(const std::string &source, const size_t mboard = ALL_MBOARDS) = 0; + +    /*! +     * Get the currently set clock source. +     * \param mboard which motherboard to get the config +     * \return the string representing the clock source +     */ +    virtual std::string get_clock_source(const size_t mboard) = 0; + +    /*! +     * Get a list of possible clock sources. +     * \param mboard which motherboard to get the list +     * \return a vector of strings for possible settings +     */ +    virtual std::vector<std::string> get_clock_sources(const size_t mboard) = 0; + +    /*!       * Get the number of USRP motherboards in this configuration.       */      virtual size_t get_num_mboards(void) = 0; diff --git a/host/lib/deprecated.cpp b/host/lib/deprecated.cpp index dd4cc02ad..b659d1be5 100644 --- a/host/lib/deprecated.cpp +++ b/host/lib/deprecated.cpp @@ -203,3 +203,31 @@ io_type_t::io_type_t(size_t size):  {      /* NOP */  } + +#include <uhd/types/clock_config.hpp> + +using namespace uhd; + +clock_config_t clock_config_t::external(void){ +    clock_config_t clock_config; +    clock_config.ref_source = clock_config_t::REF_SMA; +    clock_config.pps_source = clock_config_t::PPS_SMA; +    clock_config.pps_polarity = clock_config_t::PPS_POS; +    return clock_config; +} + +clock_config_t clock_config_t::internal(void){ +    clock_config_t clock_config; +    clock_config.ref_source = clock_config_t::REF_INT; +    clock_config.pps_source = clock_config_t::PPS_SMA; +    clock_config.pps_polarity = clock_config_t::PPS_POS; +    return clock_config; +} + +clock_config_t::clock_config_t(void): +    ref_source(REF_INT), +    pps_source(PPS_SMA), +    pps_polarity(PPS_POS) +{ +    /* NOP */ +} diff --git a/host/lib/types/CMakeLists.txt b/host/lib/types/CMakeLists.txt index 957dfd345..2ca0faef7 100644 --- a/host/lib/types/CMakeLists.txt +++ b/host/lib/types/CMakeLists.txt @@ -80,7 +80,6 @@ SET_SOURCE_FILES_PROPERTIES(  # This file included, use CMake directory variables  ########################################################################  LIBUHD_APPEND_SOURCES( -    ${CMAKE_CURRENT_SOURCE_DIR}/clock_config.cpp      ${CMAKE_CURRENT_SOURCE_DIR}/device_addr.cpp      ${CMAKE_CURRENT_SOURCE_DIR}/mac_addr.cpp      ${CMAKE_CURRENT_SOURCE_DIR}/ranges.cpp diff --git a/host/lib/types/clock_config.cpp b/host/lib/types/clock_config.cpp deleted file mode 100644 index c150c5cc3..000000000 --- a/host/lib/types/clock_config.cpp +++ /dev/null @@ -1,44 +0,0 @@ -// -// Copyright 2011 Ettus Research LLC -// -// 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/>. -// - -#include <uhd/types/clock_config.hpp> - -using namespace uhd; - -clock_config_t clock_config_t::external(void){ -    clock_config_t clock_config; -    clock_config.ref_source = clock_config_t::REF_SMA; -    clock_config.pps_source = clock_config_t::PPS_SMA; -    clock_config.pps_polarity = clock_config_t::PPS_POS; -    return clock_config; -} - -clock_config_t clock_config_t::internal(void){ -    clock_config_t clock_config; -    clock_config.ref_source = clock_config_t::REF_INT; -    clock_config.pps_source = clock_config_t::PPS_SMA; -    clock_config.pps_polarity = clock_config_t::PPS_POS; -    return clock_config; -} - -clock_config_t::clock_config_t(void): -    ref_source(REF_INT), -    pps_source(PPS_SMA), -    pps_polarity(PPS_POS) -{ -    /* NOP */ -} diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp index 73699dc81..ab841487f 100644 --- a/host/lib/usrp/multi_usrp.cpp +++ b/host/lib/usrp/multi_usrp.cpp @@ -359,34 +359,64 @@ public:      }      void set_clock_config(const clock_config_t &clock_config, size_t mboard){ +        //set the reference source... +        std::string clock_source; +        switch(clock_config.ref_source){ +        case clock_config_t::REF_INT: clock_source = "internal"; break; +        case clock_config_t::PPS_SMA: clock_source = "external"; break; +        case clock_config_t::PPS_MIMO: clock_source = "mimo"; break; +        default: clock_source = "unknown"; +        } +        this->set_clock_source(clock_source, mboard); + +        //set the time source +        std::string time_source; +        switch(clock_config.pps_source){ +        case clock_config_t::PPS_INT: time_source = "internal"; break; +        case clock_config_t::PPS_SMA: time_source = "external"; break; +        case clock_config_t::PPS_MIMO: time_source = "mimo"; break; +        default: time_source = "unknown"; +        } +        if (time_source == "external" and clock_config.pps_polarity == clock_config_t::PPS_NEG) time_source = "_external_"; +        this->set_time_source(time_source, mboard); +    } + +    void set_time_source(const std::string &source, const size_t mboard){          if (mboard != ALL_MBOARDS){ -            //set the reference source... -            std::string clock_source; -            switch(clock_config.ref_source){ -            case clock_config_t::REF_INT: clock_source = "internal"; break; -            case clock_config_t::PPS_SMA: clock_source = "external"; break; -            case clock_config_t::PPS_MIMO: clock_source = "mimo"; break; -            default: clock_source = "unknown"; -            } -            _tree->access<std::string>(mb_root(mboard) / "clock_source" / "value").set(clock_source); - -            //set the time source -            std::string time_source; -            switch(clock_config.pps_source){ -            case clock_config_t::PPS_INT: time_source = "internal"; break; -            case clock_config_t::PPS_SMA: time_source = "external"; break; -            case clock_config_t::PPS_MIMO: time_source = "mimo"; break; -            default: time_source = "unknown"; -            } -            if (clock_source == "external" and clock_config.pps_polarity == clock_config_t::PPS_NEG) time_source = "_external_"; -            _tree->access<std::string>(mb_root(mboard) / "time_source" / "value").set(time_source); +            _tree->access<std::string>(mb_root(mboard) / "time_source" / "value").set(source);              return;          }          for (size_t m = 0; m < get_num_mboards(); m++){ -            set_clock_config(clock_config, m); +            return this->set_time_source(source, m);          }      } +    std::string get_time_source(const size_t mboard){ +        return _tree->access<std::string>(mb_root(mboard) / "time_source" / "value").get(); +    } + +    std::vector<std::string> get_time_sources(const size_t mboard){ +        return _tree->access<std::vector<std::string> >(mb_root(mboard) / "time_source" / "options").get(); +    } + +    void set_clock_source(const std::string &source, const size_t mboard){ +        if (mboard != ALL_MBOARDS){ +            _tree->access<std::string>(mb_root(mboard) / "clock_source" / "value").set(source); +            return; +        } +        for (size_t m = 0; m < get_num_mboards(); m++){ +            return this->set_clock_source(source, m); +        } +    } + +    std::string get_clock_source(const size_t mboard){ +        return _tree->access<std::string>(mb_root(mboard) / "clock_source" / "value").get(); +    } + +    std::vector<std::string> get_clock_sources(const size_t mboard){ +        return _tree->access<std::vector<std::string> >(mb_root(mboard) / "clock_source" / "options").get(); +    } +      size_t get_num_mboards(void){          return _tree->list("/mboards").size();      } | 
