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):