Sorry, the first diff included wrong number of channels :-( 
I now hardcoded it for 2 and 4 channels with counters since adding more
USRPs will need changes in code to usrp_multi.py, scope_window.py and a
clever way to distribute the clock signal and sync signals.

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,17 @@
         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 and 4 == options.nchan:
+            no_chans = 6 
+        if options.show_counters and 2 == options.nchan:
+            no_chans = 4
 
-        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 +189,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 +340,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):
 

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

Reply via email to