Hey all, as mentioned in my mail on gnuradio-discuss, I attached my changes that *seem* to make the gnuradio-examples/multi_usrp stuff working again. It works for me and it would be nice, if someone could test it and make the necessary changes if it works as intended.
I'm not quite sure about the change to Makefile.am and whether it would be better to have usrp_multi.py under gnuradio instead of gnuradio.usrp. Regarding the changes to scope_window.py one could discuss about the colors I picked for the additional channels ;-) Sorry for the format, but I'm not good with the patch/diff utils. Best regards, Moritz
Index: gr-usrp/src/usrp_multi.py =================================================================== --- gr-usrp/src/usrp_multi.py (revision 11561) +++ gr-usrp/src/usrp_multi.py (working copy) @@ -1,5 +1,5 @@ # -# Copyright 2005,2008 Free Software Foundation, Inc. +# Copyright 2005 Free Software Foundation, Inc. # # This file is part of GNU Radio # @@ -21,16 +21,14 @@ import math from gnuradio import gr, gru -from gnuradio.gr import hier_block2 from gnuradio import usrp +from gnuradio import blks2 from usrpm import usrp_prims import sys class multi_source_align(object): - def __init__(self, fg, master_serialno, decim, nchan=2, pga_gain=0.0, - cordic_freq=0.0, mux=None, align_interval=-1, - fpga_filename="multi_2rxhb_2tx.rbf"): + def __init__(self, fg, master_serialno,decim,nchan=2,pga_gain=0.0,cordic_freq=0.0,mux=None,align_interval=-1): """ Align multiple sources (usrps) using samplenumbers in the first channel. @@ -59,8 +57,8 @@ if mux is None: mux=self.get_default_mux() #Note that all channels have shifted left because of the added 32 bit counter channel - u1 = usrp.source_s (1, decim, nchan, gru.hexint(mux), mode,fpga_filename=fpga_filename ) - u0 = usrp.source_s (0, decim, nchan, gru.hexint(mux), mode,fpga_filename=fpga_filename ) + u1 = usrp.source_s (1, decim, nchan, gru.hexint(mux), mode,fpga_filename="multi_2rxhb_2tx.rbf" ) + u0 = usrp.source_s (0, decim, nchan, gru.hexint(mux), mode,fpga_filename="multi_2rxhb_2tx.rbf" ) print 'usrp[0] serial',u0.serial_number() print 'usrp[1] serial',u1.serial_number() #default, choose the second found usrp as master (which is usually the usrp which was first plugged in) @@ -82,10 +80,10 @@ print errorstring raise ValueError, errorstring else: #default, just choose the first found usrp as master - um_index=1 - um=u1 - us_index=0 - us=u0 + um_index=0 + um=u0 + us_index=1 + us=u1 self.usrp_master=um self.usrp_slave=us @@ -166,31 +164,31 @@ #SLAVE #disable master, enable slave and set sync pulse to zero reg_mask = usrp_prims.bmFR_RX_SYNC_SLAVE | usrp_prims.bmFR_RX_SYNC_MASTER | usrp_prims.bmFR_RX_SYNC - self.usrp_slave._u._write_fpga_reg_masked(usrp_prims.FR_RX_MASTER_SLAVE, usrp_prims.bmFR_RX_SYNC_SLAVE,reg_mask) + self.usrp_slave._write_fpga_reg_masked(usrp_prims.FR_RX_MASTER_SLAVE, usrp_prims.bmFR_RX_SYNC_SLAVE,reg_mask) #set SYNC slave iopin on daughterboards RXA as input oe = 0 # set rx_a_io[bitnoFR_RX_SYNC_INPUT_IOPIN] as input oe_mask = usrp_prims.bmFR_RX_SYNC_INPUT_IOPIN - self.usrp_slave._u._write_oe(0,oe,oe_mask) + self.usrp_slave._write_oe(0,oe,oe_mask) #Now it is save to enable the master #MASTER #enable master, disable slave and set sync pulse to zero reg_mask = usrp_prims.bmFR_RX_SYNC_SLAVE | usrp_prims.bmFR_RX_SYNC_MASTER | usrp_prims.bmFR_RX_SYNC - self.usrp_master._u._write_fpga_reg_masked(usrp_prims.FR_RX_MASTER_SLAVE,usrp_prims.bmFR_RX_SYNC_MASTER,reg_mask) + self.usrp_master._write_fpga_reg_masked(usrp_prims.FR_RX_MASTER_SLAVE,usrp_prims.bmFR_RX_SYNC_MASTER,reg_mask) #set SYNC master iopin on daughterboards RXA as output oe = usrp_prims.bmFR_RX_SYNC_OUTPUT_IOPIN # set rx_a_io[bitnoFR_RX_SYNC_OUTPUT_IOPIN] as output oe_mask = usrp_prims.bmFR_RX_SYNC_OUTPUT_IOPIN - self.usrp_master._u._write_oe(0,oe,oe_mask) + self.usrp_master._write_oe(0,oe,oe_mask) def sync_usrps(self, evt): self.sync() def sync(self): result=False - result = self.usrp_master._u._write_fpga_reg_masked (usrp_prims.FR_RX_MASTER_SLAVE, usrp_prims.bmFR_RX_SYNC, usrp_prims.bmFR_RX_SYNC ) + result = self.usrp_master._write_fpga_reg_masked (usrp_prims.FR_RX_MASTER_SLAVE, usrp_prims.bmFR_RX_SYNC, usrp_prims.bmFR_RX_SYNC ) #There should be a small delay here, but the time it takes to get the sync to the usrp is long enough #turn sync pulse off - result = result & self.usrp_master._u._write_fpga_reg_masked (usrp_prims.FR_RX_MASTER_SLAVE,0 ,usrp_prims.bmFR_RX_SYNC); + result = result & self.usrp_master._write_fpga_reg_masked (usrp_prims.FR_RX_MASTER_SLAVE,0 ,usrp_prims.bmFR_RX_SYNC); return result; def nullsink_counters(self): Index: gr-usrp/src/Makefile.am =================================================================== --- gr-usrp/src/Makefile.am (revision 11561) +++ gr-usrp/src/Makefile.am (working copy) @@ -91,7 +91,8 @@ # additional Python files to be installed along with the SWIG-generated one usrp_swig_python = \ - __init__.py + __init__.py \ + usrp_multi.py # additional SWIG files to be installed usrp_swig_swiginclude_headers = \ Index: gr-wxgui/src/python/scope_window.py =================================================================== --- gr-wxgui/src/python/scope_window.py (revision 11561) +++ gr-wxgui/src/python/scope_window.py (working copy) @@ -55,6 +55,8 @@ (0.0, 0.8, 0.0), (1.0, 0.0, 0.0), (0.8, 0.0, 0.8), + (0.5, 1.0, 0.8), + (0.0, 0.0, 0.8), ) TRIGGER_COLOR_SPEC = (1.0, 0.4, 0.0) AUTORANGE_UPDATE_RATE = 0.5 #sec Index: gnuradio-examples/python/multi_usrp/multi_usrp_oscope.py =================================================================== --- gnuradio-examples/python/multi_usrp/multi_usrp_oscope.py (revision 11561) +++ gnuradio-examples/python/multi_usrp/multi_usrp_oscope.py (working copy) @@ -24,17 +24,16 @@ from gnuradio import gr, gru from gnuradio import usrp +from gnuradio.usrp import usrp_multi from gnuradio import eng_notation from gnuradio.eng_option import eng_option -from gnuradio.wxgui import stdgui, fftsink, waterfallsink, scopesink, form, slider +from gnuradio.wxgui import stdgui2, fftsink2, waterfallsink2, scopesink2, form, slider from optparse import OptionParser import wx import sys import time -from gnuradio import usrp_multi - def pick_subdevice(u): """ The user didn't specify a subdevice on the command line. @@ -49,9 +48,9 @@ return (0, 0) -class app_flow_graph(stdgui.gui_flow_graph): +class app_flow_graph(stdgui2.std_top_block): def __init__(self, frame, panel, vbox, argv): - stdgui.gui_flow_graph.__init__(self) + stdgui2.std_top_block.__init__(self,frame,panel,vbox,argv) self.frame = frame self.panel = panel @@ -97,7 +96,7 @@ # build the graph - #self.u = usrp.source_c(which=options.which_usrp,decim_rate=options.decim) + #self.u = usrp.source_c(which=0,decim_rate=options.decim) if (options.mux is None) | (4==options.nchan): init_mux=None #use default mux which is 0x10321032 else: @@ -106,7 +105,6 @@ init_gain=0.0 init_freq=0.0 init_align_interval=-1 - self.multi=usrp_multi.multi_source_align( self, options.master_serialno, options.decim, options.nchan, init_gain, init_freq, init_mux, init_align_interval) self.um=self.multi.get_master_usrp() @@ -133,11 +131,15 @@ self.subdevs = usrp.selected_subdev(self.us, options.rx_subdev_spec) input_rate = self.um.adc_freq() / self.um.decim_rate() + # determine the needed inputs for scopesink (one counter per USRP) + no_chans = options.nchan + if options.show_counters: + no_chans += no_chans/2 - self.scope = scopesink.scope_sink_f(self, panel, sample_rate=input_rate, + self.scope = scopesink2.scope_sink_f(panel, sample_rate=input_rate, frame_decim=options.frame_decim, v_scale=options.v_scale, - t_scale=options.t_scale) + t_scale=options.t_scale,num_inputs=no_chans) self.sink_count=0 self.add_to_scope((self.multi.get_master_source_c(),1),options.show_q) self.add_to_scope((self.multi.get_slave_source_c(),1),options.show_q) @@ -185,8 +187,8 @@ self.connect((c2f,0), (self.scope,self.sink_count)) self.sink_count=self.sink_count+1 if show_q: - self.connect((c2f,1), (self.scope,self.sink_count)) - self.sink_count=self.sink_count+1 + self.connect((c2f,1), (self.scope,self.sink_count)) + self.sink_count=self.sink_count+1 def _set_status_msg(self, msg): @@ -336,7 +338,7 @@ self.multi.sync() def main (): - app = stdgui.stdapp(app_flow_graph, "MULTI_USRP O'scope", nstatus=1) + app = stdgui2.stdapp(app_flow_graph, "MULTI_USRP O'scope", nstatus=1) app.MainLoop() if __name__ == '__main__': Index: gnuradio-examples/python/multi_usrp/multi_usrp_rx_cfile.py =================================================================== --- gnuradio-examples/python/multi_usrp/multi_usrp_rx_cfile.py (revision 11561) +++ gnuradio-examples/python/multi_usrp/multi_usrp_rx_cfile.py (working copy) @@ -15,7 +15,7 @@ import sys import time -from gnuradio import usrp_multi +from gnuradio.usrp import usrp_multi class my_top_block(gr.top_block):
signature.asc
Description: This is a digitally signed message part
_______________________________________________ Patch-gnuradio mailing list Patch-gnuradio@gnu.org http://lists.gnu.org/mailman/listinfo/patch-gnuradio