aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/usrp2/dboard_iface.cpp
diff options
context:
space:
mode:
authorJosh Blum <josh@joshknows.com>2010-06-11 19:08:58 -0700
committerJosh Blum <josh@joshknows.com>2010-06-17 11:36:14 -0700
commit7aeb266783f3cda158762f8a8619fd512024acc4 (patch)
tree90cb9e81f32b80f7d47dd50b95f0025ff0cff3e3 /host/lib/usrp/usrp2/dboard_iface.cpp
parent1db016bc6503cdca76025f131773e550bd895d48 (diff)
downloaduhd-7aeb266783f3cda158762f8a8619fd512024acc4.tar.gz
uhd-7aeb266783f3cda158762f8a8619fd512024acc4.tar.bz2
uhd-7aeb266783f3cda158762f8a8619fd512024acc4.zip
added set clock rate, and get clock rates to dboard iface, usrp2 needs clock ctrl implementation...
Diffstat (limited to 'host/lib/usrp/usrp2/dboard_iface.cpp')
-rw-r--r--host/lib/usrp/usrp2/dboard_iface.cpp24
1 files changed, 21 insertions, 3 deletions
diff --git a/host/lib/usrp/usrp2/dboard_iface.cpp b/host/lib/usrp/usrp2/dboard_iface.cpp
index 114f83f41..faebf698b 100644
--- a/host/lib/usrp/usrp2/dboard_iface.cpp
+++ b/host/lib/usrp/usrp2/dboard_iface.cpp
@@ -48,9 +48,10 @@ public:
void write_i2c(boost::uint8_t, const byte_vector_t &);
byte_vector_t read_i2c(boost::uint8_t, size_t);
+ void set_clock_rate(unit_t, double);
double get_clock_rate(unit_t);
+ std::vector<double> get_clock_rates(unit_t);
void set_clock_enabled(unit_t, bool);
- bool get_clock_enabled(unit_t);
void write_spi(
unit_t unit,
@@ -73,6 +74,7 @@ private:
boost::uint32_t _gpio_shadow;
uhd::dict<unit_t, ad5623_regs_t> _dac_regs;
+ uhd::dict<unit_t, double> _clock_rates;
void _write_aux_dac(unit_t);
};
@@ -116,8 +118,24 @@ usrp2_dboard_iface::~usrp2_dboard_iface(void){
/***********************************************************************
* Clocks
**********************************************************************/
-double usrp2_dboard_iface::get_clock_rate(unit_t){
- return _clock_ctrl->get_master_clock_rate();
+void usrp2_dboard_iface::set_clock_rate(unit_t unit, double rate){
+ _clock_rates[unit] = rate; //set to shadow
+ switch(unit){
+ case UNIT_RX: _clock_ctrl->set_rate_rx_dboard_clock(rate); return;
+ case UNIT_TX: _clock_ctrl->set_rate_tx_dboard_clock(rate); return;
+ }
+}
+
+double usrp2_dboard_iface::get_clock_rate(unit_t unit){
+ return _clock_rates[unit]; //get from shadow
+}
+
+std::vector<double> usrp2_dboard_iface::get_clock_rates(unit_t unit){
+ switch(unit){
+ case UNIT_RX: return _clock_ctrl->get_rates_rx_dboard_clock();
+ case UNIT_TX: return _clock_ctrl->get_rates_tx_dboard_clock();
+ default: UHD_THROW_INVALID_CODE_PATH();
+ }
}
void usrp2_dboard_iface::set_clock_enabled(unit_t unit, bool enb){