summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/include/uhd/deprecated.hpp1
-rw-r--r--host/include/uhd/types/clock_config.hpp5
-rw-r--r--host/include/uhd/usrp/multi_usrp.hpp53
-rw-r--r--host/lib/deprecated.cpp28
-rw-r--r--host/lib/types/CMakeLists.txt1
-rw-r--r--host/lib/types/clock_config.cpp44
-rw-r--r--host/lib/usrp/multi_usrp.cpp72
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();
}