aboutsummaryrefslogtreecommitdiffstats
path: root/host
diff options
context:
space:
mode:
Diffstat (limited to 'host')
-rw-r--r--host/lib/convert/convert_unpack_sc12.cpp16
-rw-r--r--host/lib/usrp/multi_usrp.cpp12
-rw-r--r--host/lib/usrp/x300/x300_impl.cpp14
3 files changed, 20 insertions, 22 deletions
diff --git a/host/lib/convert/convert_unpack_sc12.cpp b/host/lib/convert/convert_unpack_sc12.cpp
index a2aec2ae5..94b415355 100644
--- a/host/lib/convert/convert_unpack_sc12.cpp
+++ b/host/lib/convert/convert_unpack_sc12.cpp
@@ -62,17 +62,17 @@ void convert_sc12_item32_3_to_star_4
const boost::uint64_t line12 = (boost::uint64_t(line1) << 32) | line2;
//step 1: shift out and mask off the individual numbers
- const type i0 = type(boost::int16_t(line0 >> 16)*scalar);
- const type q0 = type(boost::int16_t(line0 >> 4)*scalar);
+ const type i0 = type(boost::int16_t((line0 >> 16) & 0xfff0)*scalar);
+ const type q0 = type(boost::int16_t((line0 >> 4) & 0xfff0)*scalar);
- const type i1 = type(boost::int16_t(line01 >> 24)*scalar);
- const type q1 = type(boost::int16_t(line1 >> 12)*scalar);
+ const type i1 = type(boost::int16_t((line01 >> 24) & 0xfff0)*scalar);
+ const type q1 = type(boost::int16_t((line1 >> 12) & 0xfff0)*scalar);
- const type i2 = type(boost::int16_t(line1 >> 0)*scalar);
- const type q2 = type(boost::int16_t(line12 >> 20)*scalar);
+ const type i2 = type(boost::int16_t((line1 >> 0) & 0xfff0)*scalar);
+ const type q2 = type(boost::int16_t((line12 >> 20) & 0xfff0)*scalar);
- const type i3 = type(boost::int16_t(line2 >> 8)*scalar);
- const type q3 = type(boost::int16_t(line2 << 4)*scalar);
+ const type i3 = type(boost::int16_t((line2 >> 8) & 0xfff0)*scalar);
+ const type q3 = type(boost::int16_t((line2 << 4) & 0xfff0)*scalar);
//step 2: load the outputs
out0 = std::complex<type>(i0, q0);
diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp
index 7f27bdc64..e97787785 100644
--- a/host/lib/usrp/multi_usrp.cpp
+++ b/host/lib/usrp/multi_usrp.cpp
@@ -393,16 +393,16 @@ public:
dict<std::string, std::string> usrp_info;
mboard_eeprom_t mb_eeprom = _tree->access<mboard_eeprom_t>(mb_root(mcp.mboard) / "eeprom").get();
- dboard_eeprom_t db_eeprom = _tree->access<dboard_eeprom_t>(rx_rf_fe_root(mcp.chan).branch_path().branch_path() / "rx_eeprom").get();
+ dboard_eeprom_t db_eeprom = _tree->access<dboard_eeprom_t>(rx_rf_fe_root(chan).branch_path().branch_path() / "rx_eeprom").get();
usrp_info["mboard_id"] = _tree->access<std::string>(mb_root(mcp.mboard) / "name").get();
usrp_info["mboard_name"] = mb_eeprom["name"];
usrp_info["mboard_serial"] = mb_eeprom["serial"];
usrp_info["rx_id"] = db_eeprom.id.to_pp_string();
- usrp_info["rx_subdev_name"] = _tree->access<std::string>(rx_rf_fe_root(mcp.chan) / "name").get();
+ usrp_info["rx_subdev_name"] = _tree->access<std::string>(rx_rf_fe_root(chan) / "name").get();
usrp_info["rx_subdev_spec"] = _tree->access<subdev_spec_t>(mb_root(mcp.mboard) / "rx_subdev_spec").get().to_string();
usrp_info["rx_serial"] = db_eeprom.serial;
- usrp_info["rx_antenna"] = _tree->access<std::string>(rx_rf_fe_root(mcp.chan) / "antenna" / "value").get();
+ usrp_info["rx_antenna"] = _tree->access<std::string>(rx_rf_fe_root(chan) / "antenna" / "value").get();
return usrp_info;
}
@@ -412,16 +412,16 @@ public:
dict<std::string, std::string> usrp_info;
mboard_eeprom_t mb_eeprom = _tree->access<mboard_eeprom_t>(mb_root(mcp.mboard) / "eeprom").get();
- dboard_eeprom_t db_eeprom = _tree->access<dboard_eeprom_t>(tx_rf_fe_root(mcp.chan).branch_path().branch_path() / "tx_eeprom").get();
+ dboard_eeprom_t db_eeprom = _tree->access<dboard_eeprom_t>(tx_rf_fe_root(chan).branch_path().branch_path() / "tx_eeprom").get();
usrp_info["mboard_id"] = _tree->access<std::string>(mb_root(mcp.mboard) / "name").get();
usrp_info["mboard_name"] = mb_eeprom["name"];
usrp_info["mboard_serial"] = mb_eeprom["serial"];
usrp_info["tx_id"] = db_eeprom.id.to_pp_string();
- usrp_info["tx_subdev_name"] = _tree->access<std::string>(tx_rf_fe_root(mcp.chan) / "name").get();
+ usrp_info["tx_subdev_name"] = _tree->access<std::string>(tx_rf_fe_root(chan) / "name").get();
usrp_info["tx_subdev_spec"] = _tree->access<subdev_spec_t>(mb_root(mcp.mboard) / "tx_subdev_spec").get().to_string();
usrp_info["tx_serial"] = db_eeprom.serial;
- usrp_info["tx_antenna"] = _tree->access<std::string>(tx_rf_fe_root(mcp.chan) / "antenna" / "value").get();
+ usrp_info["tx_antenna"] = _tree->access<std::string>(tx_rf_fe_root(chan) / "antenna" / "value").get();
return usrp_info;
}
diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp
index 95ac3af38..bf676b661 100644
--- a/host/lib/usrp/x300/x300_impl.cpp
+++ b/host/lib/usrp/x300/x300_impl.cpp
@@ -755,6 +755,12 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
_tree->create<bool>(mb_path / "clock_source" / "output")
.subscribe(boost::bind(&x300_clock_ctrl::set_ref_out, mb.clock, _1));
+ //initialize tick rate (must be done before setting time)
+ _tree->access<double>(mb_path / "tick_rate")
+ .subscribe(boost::bind(&x300_impl::set_tick_rate, this, boost::ref(mb), _1))
+ .subscribe(boost::bind(&x300_impl::update_tick_rate, this, boost::ref(mb), _1))
+ .set(mb.clock->get_master_clock_rate());
+
////////////////////////////////////////////////////////////////////
// initialize clock and time sources
////////////////////////////////////////////////////////////////////
@@ -790,14 +796,6 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)
.publish(boost::bind(&x300_impl::get_ref_locked, this, mb.zpu_ctrl));
////////////////////////////////////////////////////////////////////
- // create clock properties
- ////////////////////////////////////////////////////////////////////
- _tree->access<double>(mb_path / "tick_rate")
- .subscribe(boost::bind(&x300_impl::set_tick_rate, this, boost::ref(mb), _1))
- .subscribe(boost::bind(&x300_impl::update_tick_rate, this, boost::ref(mb), _1))
- .set(mb.clock->get_master_clock_rate());
-
- ////////////////////////////////////////////////////////////////////
// do some post-init tasks
////////////////////////////////////////////////////////////////////
subdev_spec_t rx_fe_spec, tx_fe_spec;