Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
On Sat, 2008-12-27 at 22:01 -0500, Marcus D. Leech wrote: This code worked as of a couple of weeks ago: self.subdev[0].set_bw(lbw) It now provokes: [...] AttributeError: 'db_base_sptr' object has no attribute 'set_bw' Just a reminder that when updating using svn from the trunk, one should run 'sudo make uninstall' and 'make distclean' from the existing source code tree *first*. You can usually get away with not doing this, but not at the moment. The above problem was caused by stray files left from a previous installation. -Johnathan ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
Johnathan Corgan wrote: On Thu, Dec 25, 2008 at 11:21 PM, Johnathan Corgan jcor...@corganenterprises.com wrote: But I'm also running into a problem with set_bw() not being recognized as an attribute of a USRP object. Did this get missed? Yep, sure did (at least from the Python API). I'll fix in the morning. This is done, please update and let me know how it works for you. -Johnathan I just re-built from the latest trunk SVN (complete re-build, including complete SVN co), and the usrp objects still don't have a set_bw() method in Python. -- Marcus Leech Principal Investigator, Shirleys Bay Radio Astronomy Consortium http://www.sbrac.org ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
On Sat, 2008-12-27 at 20:55 -0500, Marcus D. Leech wrote: I just re-built from the latest trunk SVN (complete re-build, including complete SVN co), and the usrp objects still don't have a set_bw() method in Python. The set_bw() is a method on the daughterboard, not USRP. -Johnathan ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
Johnathan Corgan wrote: On Sat, 2008-12-27 at 20:55 -0500, Marcus D. Leech wrote: I just re-built from the latest trunk SVN (complete re-build, including complete SVN co), and the usrp objects still don't have a set_bw() method in Python. The set_bw() is a method on the daughterboard, not USRP. -Johnathan This code worked as of a couple of weeks ago: self.subdev[0].set_bw(lbw) It now provokes: File /usr/local/lib64/python2.5/site-packages/gnuradio/wxgui/stdgui2.py, line 60, in __init__ self.panel = stdpanel (self, self, top_block_maker) File /usr/local/lib64/python2.5/site-packages/gnuradio/wxgui/stdgui2.py, line 81, in __init__ self.top_block = top_block_maker (frame, self, vbox, sys.argv) File /usr/local/bin/usrp_ra_receiver.py, line 439, in __init__ self.subdev[0].set_bw(lbw) AttributeError: 'db_base_sptr' object has no attribute 'set_bw' -- Marcus Leech Principal Investigator, Shirleys Bay Radio Astronomy Consortium http://www.sbrac.org ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
On Thu, Dec 25, 2008 at 11:21 PM, Johnathan Corgan jcor...@corganenterprises.com wrote: But I'm also running into a problem with set_bw() not being recognized as an attribute of a USRP object. Did this get missed? Yep, sure did (at least from the Python API). I'll fix in the morning. This is done, please update and let me know how it works for you. -Johnathan ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
On Fri, 2008-12-26 at 00:54 -0500, Marcus D. Leech wrote: But I'm also running into a problem with set_bw() not being recognized as an attribute of a USRP object. Did this get missed? Yep, sure did (at least from the Python API). I'll fix in the morning. -Johnathan ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
[Discuss-gnuradio] USRP1 full C++ API update merged into trunk
As initially discussed here: http://lists.gnu.org/archive/html/discuss-gnuradio/2008-12/msg00106.html ...the fully native C++ implementation of the USRP API has been merged into the GNU Radio trunk. This is one of the last items to be completed for the official 3.2 release. Prior to this change, most of the USRP and daughterboard configuration code was written in Python, and thus was only available to use from Python GNU Radio applications. This update is a rewrite of all of this code using C++ and puts it in libusrp library, which allows C++ only applications to use the full capabilities of the USRP hardware. Much of this work was done by Tom Rondeau. In spite of this significant rewrite, most Python GNU Radio users do not have to make any changes to their code and should see no difference in functionality. The USRP hardware interface is now provided in three ways: 1) libusrp, which provides the lowest-level communications services over USB to the USRP hardware. This is a C++ based read/write raw sample interface and does not provide any of the streaming semantics of GNU Radio flowgraphs. 2) libgnuradio-usrp, which provides the GNU Radio C++ signal processing blocks for the USRP. This is implemented on top of libusrp and provides the streaming interface to the USRP inside GNU Radio. 3) The python usrp module. This is now only a thin Python wrapper around libgnuradio-usrp, and continues to provide the usrp.source_c, usrp.sink_c, etc. blocks that most GNU Radio users have already been using. API CHANGES One goal of this API update was to remain as backward compatible as possible with existing code users have written. Unfortunately, because of slight incompatibilities, two functions have changed. The way to obtain a daughterboard instance subdevice number has been to reference the _which instance variable. This has changed to a function call. This is mostly commonly seen in this snippet of code: tr = usrp.tune(self.subdev._which, self.subdev, target_freq) ...which is now: tr = usrp.tune(self.subdev.which(), self.subdev, target_freq) The other change has been to the installed daughterboard instance array, which can be but isn't normally accessed by user code: u = usrp.source_c() subdev = u.db[0][0] ...now also becomes a function call: subdev = u.db(0, 0) UPDATING YOUR GNU RADIO SOFTWARE INSTALLATION This only applies to people using the GNU Radio trunk software via svn; this update does not affect release 3.1.x. As there are many filename changes in both the source tree and installed file set, you will need to first uninstall your existing GNU Radio installation, then clean out the build files, *before* updating your source code tree: $ sudo make uninstall $ make distclean $ svn update Then you can proceed with building the new trunk version as usual, per the instructions for your particular OS/distribution. This update adds a new compile and runtime dependency. We have already been using the Boost shared pointer, threading and date/time libraries; GNU Radio now also uses the Boost program options library. These are likely already installed if you have Boost supplied by your OS distribution. If you had to compile Boost from scratch, you will need recompile and reinstall, adding 'program_options' to the list of libraries to install. The GNU Radio build 'configure' step will tell you if this library is missing. See: http://gnuradio.org/trac/browser/gnuradio/trunk/README.building-boost ...if you need further instruction on completing this step. KNOWN ISSUES As of this merge, there is one known issue that needs to be resolved. When using the RFX series of USRP daughterboards, sometimes the 'tune' command will correctly tune the card, yet report that the tuning has failed. Ironically, we think this is because the new tuning code is now faster, and doesn't wait long enough for the daughterboard PLL to settle. A fix is being worked on. Any problem reports may, as usual, be sent to the mailing list or entered into the bug database for follow up. Thank you, and Happy Holidays to everyone from the GNU Radio team. Johnathan Corgan Corgan Enterprises LLC ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio
Re: [Discuss-gnuradio] USRP1 full C++ API update merged into trunk
On Wed, 2008-12-24 at 13:23 -0500, Philip Balister wrote: On Wed, Dec 24, 2008 at 3:12 AM, Johnathan Corgan jcor...@corganenterprises.com wrote: 1) libusrp, which provides the lowest-level communications services over USB to the USRP hardware. This is a C++ based read/write raw sample interface and does not provide any of the streaming semantics of GNU Radio flowgraphs. Do you know if there are any changes in the libusrp api for the 3.2 release? To previously existing code? Yes, though relatively minor. Of course, this last update *adds* the entire daughterboard control infrastructure, and some USRP configuration methods that were previously only in Python. The main difference is that the usrp_standard_* class 'make' functions return a shared pointer rather than a raw pointer. This return type is typdef'ed, so: usrp_standard_rx *rx; ...becomes usrp_standard_rx_sptr rx; -Johnathan ___ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/discuss-gnuradio