aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib')
-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
4 files changed, 79 insertions, 66 deletions
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();
}