diff options
| author | Ashish Chaudhari <ashish@ettus.com> | 2014-08-05 17:07:46 -0700 | 
|---|---|---|
| committer | Ashish Chaudhari <ashish@ettus.com> | 2014-08-05 17:07:46 -0700 | 
| commit | 64c1d64901860c55acd1cfd21508e6b89a35a6ed (patch) | |
| tree | 109de2c044e99b0c720800fdfec04194f62c90d1 | |
| parent | db6f3a2d7aabdd0eaa1021ac174edd3cbb77be55 (diff) | |
| parent | 605b470a873c600dec9c106f5b09b70a77960470 (diff) | |
| download | uhd-64c1d64901860c55acd1cfd21508e6b89a35a6ed.tar.gz uhd-64c1d64901860c55acd1cfd21508e6b89a35a6ed.tar.bz2 uhd-64c1d64901860c55acd1cfd21508e6b89a35a6ed.zip  | |
Merge branch 'master' into ashish/cat_refactor_master
| -rw-r--r-- | README.md | 9 | ||||
| -rw-r--r-- | host/README.md | 9 | ||||
| -rw-r--r-- | host/docs/coding.dox | 12 | ||||
| -rw-r--r-- | host/docs/octoclock_firmware_burner.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_cal_rx_iq_balance.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_cal_tx_dc_offset.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_cal_tx_iq_balance.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_find_devices.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_images_downloader.1 | 2 | ||||
| -rw-r--r-- | host/docs/uhd_usrp_probe.1 | 2 | ||||
| -rw-r--r-- | host/docs/usrp2_card_burner.1 | 2 | ||||
| -rw-r--r-- | host/docs/usrp_n2xx_simple_net_burner.1 | 2 | ||||
| -rw-r--r-- | host/docs/usrp_x3xx_fpga_burner.1 | 2 | ||||
| -rw-r--r-- | host/lib/usrp/b200/b200_impl.cpp | 5 | ||||
| -rw-r--r-- | host/lib/usrp/usrp2/usrp2_impl.cpp | 9 | ||||
| -rw-r--r-- | host/lib/usrp/x300/x300_impl.cpp | 28 | ||||
| -rw-r--r-- | host/lib/usrp/x300/x300_impl.hpp | 4 | ||||
| -rw-r--r-- | host/utils/b2xx_fx3_utils.cpp | 4 | ||||
| -rw-r--r-- | host/utils/octoclock_firmware_burner.cpp | 2 | ||||
| -rw-r--r-- | host/utils/query_gpsdo_sensors.cpp | 9 | ||||
| -rw-r--r-- | host/utils/usrp_burn_mb_eeprom.cpp | 5 | ||||
| -rw-r--r-- | host/utils/usrp_n2xx_simple_net_burner.cpp | 2 | ||||
| -rw-r--r-- | host/utils/usrp_x3xx_fpga_burner.cpp | 2 | 
23 files changed, 76 insertions, 44 deletions
@@ -16,13 +16,12 @@ information, is the primary source of UHD documentation and "Getting  Started"-type guides.  For technical documentation related to USRP™ hardware or UHD system -design, check out the [UHD Manual](http://files.ettus.com/uhd_docs/manual/html/). +design, check out the [UHD Manual](http://files.ettus.com/manual/).  If you are looking for API documentation, check out the following resources: -* [Doxygen](http://files.ettus.com/uhd_docs/doxygen/html/index.html) -* [Coding to the API](http://files.ettus.com/uhd_docs/manual/html/coding.html) -* [Device Streaming](http://files.ettus.com/uhd_docs/manual/html/stream.html) +* [Coding to the API](http://files.ettus.com/manual/page_coding.html) +* [Device Streaming](http://files.ettus.com/manual/page_stream.html)  Additionally, be sure to check out the Ettus Research  [FAQ](http://www.ettus.com/kb/detail/frequently-asked-questions), and the @@ -44,7 +43,7 @@ UHD can be used to build stand-alone applications with USRP™ hardware, or with  third-party applications. Some common toolkits / frameworks are:  * [GNURadio](http://code.ettus.com/redmine/ettus/projects/uhd/wiki/GNU_Radio_UHD) -* [LabVIEW](http://www.ni.com/download/ni-usrp-1.2/3696/en/) +* [LabVIEW](http://www.ni.com/download/ni-usrp-1.3/4711/en/)  * [Simulink](http://www.mathworks.com/discovery/sdr/usrp.html)  * [OpenBTS](http://wush.net/trac/rangepublic/wiki/BuildInstallRun)  * [Iris](http://www.softwareradiosystems.com/redmine/projects/iris/wiki) diff --git a/host/README.md b/host/README.md index e80b10b49..f30fc8807 100644 --- a/host/README.md +++ b/host/README.md @@ -10,14 +10,13 @@ application-level programs. The UHD library runs entirely in user-space.  For documentation, please refer to the following resources: -For technical documentation related UHD check out the  -[UHD Manual](http://files.ettus.com/uhd_docs/manual/html/). +For technical documentation related to UHD check out the  +[UHD Manual](http://files.ettus.com/manual/).  If you are looking for API documentation, check out the following resources: -* [Doxygen](http://files.ettus.com/uhd_docs/doxygen/html/index.html) -* [Coding to the API](http://files.ettus.com/uhd_docs/manual/html/coding.html) -* [Device Streaming](http://files.ettus.com/uhd_docs/manual/html/stream.html) +* [Coding to the API](http://files.ettus.com/manual/page_coding.html) +* [Device Streaming](http://files.ettus.com/manual/page_stream.html)  Additionally, be sure to check out the Ettus Research  [FAQ](http://www.ettus.com/kb/detail/frequently-asked-questions), and the diff --git a/host/docs/coding.dox b/host/docs/coding.dox index b50e55e24..32dbe944a 100644 --- a/host/docs/coding.dox +++ b/host/docs/coding.dox @@ -6,15 +6,22 @@  \subsection coding_api_hilevel High-Level: The Multi-USRP -The Multi-USRP class provides a fat interface to a single USRP device +The Multi-USRP class provides a high-level interface to a single USRP device  with one or more channels, or multiple USRP devicess in a homogeneous  setup. See the documentation for uhd::usrp::multi_usrp. +\subsection coding_api_hilevelclock High-Level: The Multi-USRP-Clock + +The Multi-USRP-Clock class provides a high-level interface to a single clock +device or set of clock devices, from which the time can be queried. See the +documentation for uhd::usrp_clock::multi_usrp_clock. +  \subsection coding_api_lowlevel Low-Level: The device API  A device is an abstraction for hardware that is connected to the host  system. For a USRP device, this means that the motherboard and -everything on it would be considered to be a "device". The device API +everything on it would be considered to be a "device". For a clock device, the +device itself would be considered a "device" in software. The device API  provides ways to:  -   Discover devices that are physically connected to the host system. @@ -23,6 +30,7 @@ provides ways to:  -   Register a device driver into the discovery and factory sub-system.  -   Streaming samples with metadata into and out of the device.  -   Set and get properties on the device object. +-   Access various sensors on the device.  See the documentation for uhd::device. diff --git a/host/docs/octoclock_firmware_burner.1 b/host/docs/octoclock_firmware_burner.1 index 0494b3b37..44ff47a85 100644 --- a/host/docs/octoclock_firmware_burner.1 +++ b/host/docs/octoclock_firmware_burner.1 @@ -23,7 +23,7 @@ octoclock_firmware_burner --addr=192.168.10.3 --fw-path=~/custom_octoclock_image  .fi  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  Other UHD programs:  .sp diff --git a/host/docs/uhd_cal_rx_iq_balance.1 b/host/docs/uhd_cal_rx_iq_balance.1 index 8c2c87ece..df77afb2c 100644 --- a/host/docs/uhd_cal_rx_iq_balance.1 +++ b/host/docs/uhd_cal_rx_iq_balance.1 @@ -43,7 +43,7 @@ Samples per data capture  .PP  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/uhd_cal_tx_dc_offset.1 b/host/docs/uhd_cal_tx_dc_offset.1 index f0479d7ec..50d3899e8 100644 --- a/host/docs/uhd_cal_tx_dc_offset.1 +++ b/host/docs/uhd_cal_tx_dc_offset.1 @@ -43,7 +43,7 @@ Samples per data capture  .PP  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/uhd_cal_tx_iq_balance.1 b/host/docs/uhd_cal_tx_iq_balance.1 index bb8970f4c..859cf9a84 100644 --- a/host/docs/uhd_cal_tx_iq_balance.1 +++ b/host/docs/uhd_cal_tx_iq_balance.1 @@ -43,7 +43,7 @@ Samples per data capture  .PP  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/uhd_find_devices.1 b/host/docs/uhd_find_devices.1 index 7f92966be..dfd5c0751 100644 --- a/host/docs/uhd_find_devices.1 +++ b/host/docs/uhd_find_devices.1 @@ -86,7 +86,7 @@ uhd_find_devices \-\-args="serial=12345678"  uhd_find_devices  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/uhd_images_downloader.1 b/host/docs/uhd_images_downloader.1 index cbdc5c26e..19f109ec5 100644 --- a/host/docs/uhd_images_downloader.1 +++ b/host/docs/uhd_images_downloader.1 @@ -26,7 +26,7 @@ This program works best without any arguments.                          Set download buffer size, [default=8192]  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/uhd_usrp_probe.1 b/host/docs/uhd_usrp_probe.1 index 50ecab5c1..178027aea 100644 --- a/host/docs/uhd_usrp_probe.1 +++ b/host/docs/uhd_usrp_probe.1 @@ -93,7 +93,7 @@ uhd_usrp_probe \-\-args="serial=12345678"  uhd_usrp_probe  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/usrp2_card_burner.1 b/host/docs/usrp2_card_burner.1 index b6e1954d8..b43484b99 100644 --- a/host/docs/usrp2_card_burner.1 +++ b/host/docs/usrp2_card_burner.1 @@ -27,7 +27,7 @@ usrp2_card_burner --dev=/dev/sdd1 --fw=usrp2_fw.bin --fpga=usrp2_fpga.bin  .fi  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/usrp_n2xx_simple_net_burner.1 b/host/docs/usrp_n2xx_simple_net_burner.1 index d32b88fae..85538ee22 100644 --- a/host/docs/usrp_n2xx_simple_net_burner.1 +++ b/host/docs/usrp_n2xx_simple_net_burner.1 @@ -34,7 +34,7 @@ usrp_n2xx_simple_net_burner --addr=192.168.10.3  .fi  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/docs/usrp_x3xx_fpga_burner.1 b/host/docs/usrp_x3xx_fpga_burner.1 index 4ca6fd6dc..f07e52401 100644 --- a/host/docs/usrp_x3xx_fpga_burner.1 +++ b/host/docs/usrp_x3xx_fpga_burner.1 @@ -40,7 +40,7 @@ usrp_x3xx_fpga_burner --addr=192.168.10.2 --fpga=path="custom_image.bit"  .fi  .SH SEE ALSO  UHD documentation: -.B http://files.ettus.com/uhd_docs/manual/html/index.html +.B http://files.ettus.com/manual/  .LP  GR-UHD documentation:  .B http://gnuradio.org/doc/doxygen/page_uhd.html diff --git a/host/lib/usrp/b200/b200_impl.cpp b/host/lib/usrp/b200/b200_impl.cpp index 7c85176ef..393da2d04 100644 --- a/host/lib/usrp/b200/b200_impl.cpp +++ b/host/lib/usrp/b200/b200_impl.cpp @@ -475,6 +475,11 @@ b200_impl::b200_impl(const device_addr_t &device_addr)          UHD_MSG(status) << "Initializing time to the internal GPSDO" << std::endl;          const time_t tp = time_t(_gps->get_sensor("gps_time").to_int()+1);          _tree->access<time_spec_t>(mb_path / "time" / "pps").set(time_spec_t(tp)); + +        //wait for next PPS edge (timeout after 1 second) +        time_spec_t pps_time = _tree->access<time_spec_t>(mb_path / "time" / "pps").get(); +        for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(mb_path / "time" / "pps").get() == pps_time; i++) +            boost::this_thread::sleep(boost::posix_time::milliseconds(100));      } else {          //init to internal clock and time source          _tree->access<std::string>(mb_path / "clock_source/value").set("internal"); diff --git a/host/lib/usrp/usrp2/usrp2_impl.cpp b/host/lib/usrp/usrp2/usrp2_impl.cpp index ae2a6f81d..2ad15aade 100644 --- a/host/lib/usrp/usrp2/usrp2_impl.cpp +++ b/host/lib/usrp/usrp2/usrp2_impl.cpp @@ -35,6 +35,7 @@  #include <boost/assign/list_of.hpp>  #include <boost/asio/ip/address_v4.hpp>  #include <boost/asio.hpp> //used for htonl and ntohl +#include <boost/thread.hpp>  using namespace uhd;  using namespace uhd::usrp; @@ -761,7 +762,13 @@ usrp2_impl::usrp2_impl(const device_addr_t &_device_addr){              _tree->access<std::string>(root / "time_source/value").set("gpsdo");              _tree->access<std::string>(root / "clock_source/value").set("gpsdo");              UHD_MSG(status) << "Initializing time to the internal GPSDO" << std::endl; -            _mbc[mb].time64->set_time_next_pps(time_spec_t(time_t(_mbc[mb].gps->get_sensor("gps_time").to_int()+1))); +            const time_t tp = time_t(_mbc[mb].gps->get_sensor("gps_time").to_int()+1); +            _tree->access<time_spec_t>(root / "time" / "pps").set(time_spec_t(tp)); + +            //wait for next PPS edge (timeout after 1 second) +            time_spec_t pps_time = _tree->access<time_spec_t>(root / "time" / "pps").get(); +            for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(root / "time" / "pps").get() == pps_time; i++) +                boost::this_thread::sleep(boost::posix_time::milliseconds(100));          }      } diff --git a/host/lib/usrp/x300/x300_impl.cpp b/host/lib/usrp/x300/x300_impl.cpp index bb59763ee..365828679 100644 --- a/host/lib/usrp/x300/x300_impl.cpp +++ b/host/lib/usrp/x300/x300_impl.cpp @@ -832,8 +832,10 @@ void x300_impl::setup_mb(const size_t mb_i, const uhd::device_addr_t &dev_addr)              UHD_MSG(status) << "Initializing time to the GPSDO time" << std::endl;              const time_t tp = time_t(mb.gps->get_sensor("gps_time").to_int()+1);              _tree->access<time_spec_t>(mb_path / "time" / "pps").set(time_spec_t(tp)); -            //wait for time to be set (timeout after 1 second) -            for (int i = 0; i < 10 && tp != (_tree->access<time_spec_t>(mb_path / "time" / "pps").get()).get_full_secs(); i++) + +            //wait for next PPS edge (timeout after 1 second) +            time_spec_t pps_time = _tree->access<time_spec_t>(mb_path / "time" / "pps").get(); +            for (size_t i = 0; i < 10 && _tree->access<time_spec_t>(mb_path / "time" / "pps").get() == pps_time; i++)                  boost::this_thread::sleep(boost::posix_time::milliseconds(100));          } else {              _tree->access<std::string>(mb_path / "clock_source" / "value").set("internal"); @@ -1079,9 +1081,13 @@ void x300_impl::setup_radio(const size_t mb_i, const std::string &slot_name)      this->update_atr_leds(mb.radio_perifs[radio_index].leds, ""); //init anyway, even if never called      //bind frontend corrections to the dboard freq props +    const fs_path db_tx_fe_path = db_path / "tx_frontends"; +    BOOST_FOREACH(const std::string &name, _tree->list(db_tx_fe_path)) { +        _tree->access<double>(db_tx_fe_path / name / "freq" / "value") +            .subscribe(boost::bind(&x300_impl::set_tx_fe_corrections, this, mb_path, slot_name, _1)); +    }      const fs_path db_rx_fe_path = db_path / "rx_frontends"; -    BOOST_FOREACH(const std::string &name, _tree->list(db_rx_fe_path)) -    { +    BOOST_FOREACH(const std::string &name, _tree->list(db_rx_fe_path)) {          _tree->access<double>(db_rx_fe_path / name / "freq" / "value")              .subscribe(boost::bind(&x300_impl::set_rx_fe_corrections, this, mb_path, slot_name, _1));      } @@ -1092,6 +1098,11 @@ void x300_impl::set_rx_fe_corrections(const uhd::fs_path &mb_path, const std::st      apply_rx_fe_corrections(this->get_tree()->subtree(mb_path), fe_name, lo_freq);  } +void x300_impl::set_tx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq) +{ +    apply_tx_fe_corrections(this->get_tree()->subtree(mb_path), fe_name, lo_freq); +} +  boost::uint32_t get_pcie_dma_channel(boost::uint8_t destination, boost::uint8_t prefix)  {      static const boost::uint32_t RADIO_GRP_SIZE = 3; @@ -1108,8 +1119,7 @@ x300_impl::both_xports_t x300_impl::make_transport(      const boost::uint8_t& destination,      const boost::uint8_t& prefix,      const uhd::device_addr_t& args, -    boost::uint32_t& sid -) +    boost::uint32_t& sid)  {      mboard_members_t &mb = _mb[mb_index];      both_xports_t xports; @@ -1206,10 +1216,10 @@ x300_impl::both_xports_t x300_impl::make_transport(                  << std::endl;          } -	size_t system_max_send_frame_size = (size_t) _max_frame_sizes.send_frame_size; -	size_t system_max_recv_frame_size = (size_t) _max_frame_sizes.recv_frame_size; +    size_t system_max_send_frame_size = (size_t) _max_frame_sizes.send_frame_size; +    size_t system_max_recv_frame_size = (size_t) _max_frame_sizes.recv_frame_size; -	// Make sure frame sizes do not exceed the max available value supported by UHD +    // Make sure frame sizes do not exceed the max available value supported by UHD          default_buff_args.send_frame_size =              (prefix == X300_RADIO_DEST_PREFIX_TX)              ? std::min(system_max_send_frame_size, X300_10GE_DATA_FRAME_MAX_SIZE) diff --git a/host/lib/usrp/x300/x300_impl.hpp b/host/lib/usrp/x300/x300_impl.hpp index 27f20fbd9..578e96383 100644 --- a/host/lib/usrp/x300/x300_impl.hpp +++ b/host/lib/usrp/x300/x300_impl.hpp @@ -211,7 +211,7 @@ private:          //perifs in each radio          radio_perifs_t radio_perifs[2]; //!< This is hardcoded s.t. radio_perifs[0] points to slot A and [1] to B          uhd::usrp::dboard_eeprom_t db_eeproms[8]; -	//! Return the index of a radio component, given a slot name. This means DSPs, radio_perifs +        //! Return the index of a radio component, given a slot name. This means DSPs, radio_perifs          size_t get_radio_index(const std::string &slot_name) {               UHD_ASSERT_THROW(slot_name == "A" or slot_name == "B");               return slot_name == "A" ? 0 : 1; @@ -321,6 +321,8 @@ private:      uhd::dict<std::string, uhd::usrp::dboard_iface::sptr> _dboard_ifaces;      void set_rx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq); +    void set_tx_fe_corrections(const uhd::fs_path &mb_path, const std::string &fe_name, const double lo_freq); +      /*! Update the IQ MUX settings for the radio peripheral according to given subdev spec.       * diff --git a/host/utils/b2xx_fx3_utils.cpp b/host/utils/b2xx_fx3_utils.cpp index 0d0eaa743..0cab6618d 100644 --- a/host/utils/b2xx_fx3_utils.cpp +++ b/host/utils/b2xx_fx3_utils.cpp @@ -176,7 +176,7 @@ uhd::transport::usb_device_handle::sptr open_device(const boost::uint16_t vid, c      catch(const std::exception &e) {          std::cerr << "Failed to communicate with the device!" << std::endl;          #ifdef UHD_PLATFORM_WIN32 -        std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/uhd_docs/manual/html/transport.html" << std::endl; +        std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/manual/page_transport.html" << std::endl;          #endif /* UHD_PLATFORM_WIN32 */          handle.reset();      } @@ -198,7 +198,7 @@ b200_iface::sptr make_b200_iface(const uhd::transport::usb_device_handle::sptr &      catch(const std::exception &e) {          std::cerr << "Failed to communicate with the device!" << std::endl;          #ifdef UHD_PLATFORM_WIN32 -        std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/uhd_docs/manual/html/transport.html" << std::endl; +        std::cerr << "The necessary drivers are not installed. Read the UHD Transport Application Notes for details:\nhttp://files.ettus.com/manual/page_transport.html" << std::endl;          #endif /* UHD_PLATFORM_WIN32 */          b200.reset();      } diff --git a/host/utils/octoclock_firmware_burner.cpp b/host/utils/octoclock_firmware_burner.cpp index b8b8a3c1d..bc91f22f9 100644 --- a/host/utils/octoclock_firmware_burner.cpp +++ b/host/utils/octoclock_firmware_burner.cpp @@ -64,7 +64,7 @@ void sig_int_handler(int){      }      else{          std::cout << std::endl << "Aborting. Your OctoClock device will be bricked." << std::endl -                               << "Refer to http://files.ettus.com/uhd_docs/doxymanual/html/octoclock.html" << std::endl +                               << "Refer to http://files.ettus.com/manual/page_octoclock.html#bootloader" << std::endl                                 << "for details on restoring your device." << std::endl;          exit(EXIT_FAILURE);      } diff --git a/host/utils/query_gpsdo_sensors.cpp b/host/utils/query_gpsdo_sensors.cpp index 91088112c..9a1556650 100644 --- a/host/utils/query_gpsdo_sensors.cpp +++ b/host/utils/query_gpsdo_sensors.cpp @@ -1,5 +1,5 @@  // -// Copyright 2012 Ettus Research LLC +// Copyright 2012,2014 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 @@ -76,8 +76,9 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){    if(std::find(sensor_names.begin(), sensor_names.end(), "gps_locked") == sensor_names.end()) {      std::cout << boost::format("\ngps_locked sensor not found.  This could mean that you have not installed the GPSDO correctly.\n\n"); -    std::cout << boost::format("Visit this page if the problem persists:\n"); -    std::cout << boost::format("http://files.ettus.com/uhd_docs/manual/html/gpsdo.html\n\n"); +    std::cout << boost::format("Visit one of these pages if the problem persists:\n"); +    std::cout << boost::format(" * N2X0/E1X0: http://files.ettus.com/manual/page_gpsdo.html"); +    std::cout << boost::format(" * X3X0: http://files.ettus.com/manual/page_gpsdo_x3x0.html\n\n");      exit(EXIT_FAILURE);    } @@ -94,7 +95,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){      uhd::sensor_value_t gps_locked = usrp->get_mboard_sensor("ref_locked",0);      if(not gps_locked.to_bool()) {        std::cout << boost::format("USRP NOT Locked to GPSDO 10 MHz Reference.\n"); -      std::cout << boost::format("Double check installation instructions: https://www.ettus.com/content/files/gpsdo-kit_2.pdf\n\n"); +      std::cout << boost::format("Double check installation instructions (N2X0/E1X0 only): https://www.ettus.com/content/files/gpsdo-kit_4.pdf\n\n");      } else          std::cout << boost::format("USRP Locked to GPSDO 10 MHz Reference.\n");    }else diff --git a/host/utils/usrp_burn_mb_eeprom.cpp b/host/utils/usrp_burn_mb_eeprom.cpp index de74d6807..92df9d7d4 100644 --- a/host/utils/usrp_burn_mb_eeprom.cpp +++ b/host/utils/usrp_burn_mb_eeprom.cpp @@ -93,13 +93,14 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){          std::cout << boost::format("    EEPROM [\"%s\"] is \"%s\"") % keys_vec[i] % mb_eeprom[keys_vec[i]] << std::endl;      }      std::cout << std::endl; +    mb_eeprom = uhd::usrp::mboard_eeprom_t();      for(size_t i = 0; i < vals_vec.size(); i++){          if(vals_vec[i] != ""){ -            uhd::usrp::mboard_eeprom_t mb_eeprom; mb_eeprom[keys_vec[i]] = vals_vec[i]; +            mb_eeprom[keys_vec[i]] = vals_vec[i];              std::cout << boost::format("Setting EEPROM [\"%s\"] to \"%s\"...") % keys_vec[i] % vals_vec[i] << std::endl; -            tree->access<uhd::usrp::mboard_eeprom_t>("/mboards/0/eeprom").set(mb_eeprom);          }      } +    tree->access<uhd::usrp::mboard_eeprom_t>("/mboards/0/eeprom").set(mb_eeprom);      std::cout << "Power-cycle the USRP device for the changes to take effect." << std::endl;      std::cout << std::endl; diff --git a/host/utils/usrp_n2xx_simple_net_burner.cpp b/host/utils/usrp_n2xx_simple_net_burner.cpp index 571c73ac8..fe437a2e5 100644 --- a/host/utils/usrp_n2xx_simple_net_burner.cpp +++ b/host/utils/usrp_n2xx_simple_net_burner.cpp @@ -139,7 +139,7 @@ void sig_int_handler(int){      }      else{          std::cout << std::endl << "Aborting. Your USRP-N Series unit will be bricked." << std::endl -                  << "Refer to http://files.ettus.com/uhd_docs/manual/html/usrp2.html#device-recovery-and-bricking" << std::endl +                  << "Refer to http://files.ettus.com/manual/page_usrp2.html#usrp2_loadflash_brick" << std::endl                    << "for details on restoring your device." << std::endl;          exit(EXIT_FAILURE);      } diff --git a/host/utils/usrp_x3xx_fpga_burner.cpp b/host/utils/usrp_x3xx_fpga_burner.cpp index 0c8ea7465..b849cfb92 100644 --- a/host/utils/usrp_x3xx_fpga_burner.cpp +++ b/host/utils/usrp_x3xx_fpga_burner.cpp @@ -92,7 +92,7 @@ void sig_int_handler(int){      }      else{          std::cout << std::endl << "Aborting. Your USRP X-Series device will be bricked." << std::endl -                  << "Refer to http://files.ettus.com/uhd_docs/manual/html/usrp_x3x0.html#use-jtag-to-load-fpga-images" << std::endl +                  << "http://files.ettus.com/manual/page_usrp_x3x0.html#x3x0_load_fpga_imgs_jtag" << std::endl                    << "for details on restoring your device." << std::endl;          exit(EXIT_FAILURE);      }  | 
